Commit Graph

26 Commits

Author SHA1 Message Date
Alexander b41ea7d023 More parser tests + fixes 2026-05-04 23:17:38 +02:00
Alexander bfef1b6c79 Implement Jackett search entpoint 2026-05-04 22:48:14 +02:00
Alexander 8ffa92276e Add Jacket indexer with capabilities implemented 2026-05-04 18:40:31 +02:00
Alexander 32eb8c931e Create indexer proto 2026-05-04 16:45:22 +02:00
Alexander f8040ec088 Default values for config 2026-05-04 16:27:04 +02:00
Alexander 268ee57913 Grpc hello service implementation 2026-05-04 14:56:05 +02:00
Alexander 6baa895c6c Configure routing 2026-05-03 16:10:24 +02:00
Alexander 58aa4ef23b Added config, added logging 2026-05-03 15:49:35 +02:00
Alexander 46c2f6541f More removing old code 2026-05-03 13:46:21 +02:00
Alexander 8067cd93c5 Start from the beginning 2026-04-29 17:31:07 +02:00
Alexander 945aab82c2 WIP 2026-04-29 17:29:58 +02:00
Alexander 3ecc6aee62 feat: add download tracking endpoints (sections 4.1, 4.2, 4.3, 4.4) 2026-04-29 13:44:01 +02:00
Alexander c307c68d88 feat: add album management endpoints (sections 2.1, 2.2, 2.3) 2026-04-29 13:34:20 +02:00
Alexander ff49403fd5 feat: add edit artist endpoint (section 1.4)
- Add GET/PUT /api/artists/{id} for artist settings
- Update sync to create artists table entry (library settings)
- Support partial updates for monitored, path, quality/metadata profiles
- Add e2e tests for get, edit, partial update flows
2026-04-29 13:22:14 +02:00
Alexander b08a0b1646 feat: add refresh and delete artist endpoints (sections 1.2, 1.3)
- Add POST /api/artists/{id}/refresh to re-fetch metadata from gRPC service
- Add DELETE /api/artists/{id} with cascade delete via PostgreSQL
- Add e2e tests for both flows covering happy path, not found, idempotency
- Extend testutil with GetArtistUpdatedAt, CountAlbumsByArtist, DELETE helper
2026-04-29 13:08:53 +02:00
Alexander 25deaf4621 test: add e2e tests for Add Artist flow (section 1.1)
- Add testutil package with DB/HTTP helpers and cleanup utilities
- Add e2e tests covering artist search, album fetch, sync persistence
- Test idempotent sync, album filtering, library list endpoints
- Requires running PostgreSQL, MetadataService, and API server
2026-04-29 11:25:30 +02:00
Alexander 41fb033d30 refactor: rewrite project from Rust to Go
- Replace Axum with Chi router
- Replace sqlx with pgx for PostgreSQL
- Replace tonic/prost with grpc-go
- Replace tracing with zerolog
- Update flake.nix for Go build with protoc generation
- Preserve all existing endpoints and functionality

Stack: Chi, pgx, grpc-go, zerolog, yaml.v3
2026-04-29 10:45:05 +02:00
Alexander f24543f401 feat: add PostgreSQL persistence and unified sync endpoint
- Add sqlx with PostgreSQL support for database operations
- Create DbService with artist/album upsert and listing methods
- Add database schema (14 tables) in containers/init.sql
- Add library controller (GET /api/library/artists, /albums, /stats)
- Merge sync_artist + ingest into single POST /api/sync endpoint
- Support configurable sync: download (bool), store (bool), album filter
- Connect to database at startup with graceful fallback
2026-04-29 10:06:01 +02:00
Alexander 3aaeade4d3 feat: add artist sync flow and stub torrent client
- Add DownloadService to orchestrate metadata → indexer → torrent flow
- Add POST /api/sync/artist endpoint for syncing artist albums
- Add StubTorrentClient for testing (logs requests to file)
- Refactor TorrentConfig to tagged enum (client_type: qbittorrent|stub|none)
- Add POST /api/reload endpoint for hot config reload
- Add chrono dependency for timestamps
2026-04-28 21:40:11 +02:00
Alexander 925c7c3703 feat: add CLI args, health endpoint, and fix torznab search
- Add clap for CLI argument parsing (-c config, -p port)
- Add health endpoint showing service status at /api/health
- Add IndexerType enum for auto URL construction (jackett/prowlarr/torznab)
- Fix Axum 0.8 route syntax ({param} instead of :param)
- Fix torznab search to use 'q' param instead of artist/album (Jackett only supports q)
2026-04-28 19:16:22 +02:00
Alexander 5afcbd68ad feat: add metadata-agregator gRPC client integration
- Add tonic/prost for gRPC client generation
- Add proto definitions from metadata-agregator service
- Add MetadataClient and MetadataService for gRPC communication
- Add REST controller exposing metadata endpoints (search, get, sync)
- Update config with metadata.endpoint setting
- Update flake.nix with protobuf for proto compilation
2026-04-28 18:58:31 +02:00
Alexander 1aaaab4640 feat: add indexer and torrent REST controllers with service layer
- Add config module for yaml config (database, indexers, torrent)
- Add indexer module with Torznab protocol support
- Add IndexerService and TorrentService for business logic
- Add REST controllers for indexer search and torrent management
- Add Docker Compose for PostgreSQL and Jackett
- Add ERD documentation for database schema
2026-04-28 18:53:50 +02:00
Alexander f77806ba46 feat: add torrent client interface with qbittorrent support
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/claude-agent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-28 18:05:36 +02:00
Alexander ff9ca7ecce feat: add rest api for music tracks
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/claude-agent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-28 18:05:32 +02:00
Alexander 7c55e5cddd chore: initialize rust project with axum
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/claude-agent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-28 18:05:27 +02:00
Alexander 98dcc63c9b chore: add nix flake configuration
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/claude-agent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
2026-04-28 18:05:23 +02:00