{"total_count":454,"incomplete_results":false,"items":[{"id":4343743594,"number":11,"state":"open","locked":false,"title":"CRUD operations for book service","body":"/generate-vividus-api-tests create CRUD tests for \"Books\" resource using https://fakerestapi.azurewebsites.net/swagger/v1/swagger.json","author_association":"COLLABORATOR","user":{"login":"MikayelSargsyan1","id":114151524,"node_id":"U_kgDOBs3QZA","avatar_url":"https://avatars.githubusercontent.com/u/114151524?v=4","html_url":"https://github.com/MikayelSargsyan1","gravatar_id":"","type":"User","site_admin":false,"url":"https://api.github.com/users/MikayelSargsyan1","events_url":"https://api.github.com/users/MikayelSargsyan1/events{/privacy}","following_url":"https://api.github.com/users/MikayelSargsyan1/following{/other_user}","followers_url":"https://api.github.com/users/MikayelSargsyan1/followers","gists_url":"https://api.github.com/users/MikayelSargsyan1/gists{/gist_id}","organizations_url":"https://api.github.com/users/MikayelSargsyan1/orgs","received_events_url":"https://api.github.com/users/MikayelSargsyan1/received_events","repos_url":"https://api.github.com/users/MikayelSargsyan1/repos","starred_url":"https://api.github.com/users/MikayelSargsyan1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/MikayelSargsyan1/subscriptions"},"comments":0,"created_at":"2026-04-28T14:00:01Z","updated_at":"2026-04-28T14:00:01Z","url":"https://api.github.com/repos/GrimMa9e/prodlenka/issues/11","html_url":"https://github.com/GrimMa9e/prodlenka/pull/11","comments_url":"https://api.github.com/repos/GrimMa9e/prodlenka/issues/11/comments","events_url":"https://api.github.com/repos/GrimMa9e/prodlenka/issues/11/events","labels_url":"https://api.github.com/repos/GrimMa9e/prodlenka/issues/11/labels{/name}","repository_url":"https://api.github.com/repos/GrimMa9e/prodlenka","pull_request":{"url":"https://api.github.com/repos/GrimMa9e/prodlenka/pulls/11","html_url":"https://github.com/GrimMa9e/prodlenka/pull/11","diff_url":"https://github.com/GrimMa9e/prodlenka/pull/11.diff","patch_url":"https://github.com/GrimMa9e/prodlenka/pull/11.patch"},"reactions":{"total_count":0,"+1":0,"-1":0,"laugh":0,"confused":0,"heart":0,"hooray":0,"rocket":0,"eyes":0,"url":"https://api.github.com/repos/GrimMa9e/prodlenka/issues/11/reactions"},"node_id":"PR_kwDOSBRyqc7WXNrq","draft":false},{"id":4255909116,"number":7,"state":"open","locked":false,"title":"Book Service Test one","body":"Vodila sam se:\r\nhttps://medium.com/@smita.s.kothari/unit-testing-in-spring-boot-best-practices-with-sample-code-e483eaa4cc19","author_association":"OWNER","user":{"login":"dbilic98","id":74556941,"node_id":"MDQ6VXNlcjc0NTU2OTQx","avatar_url":"https://avatars.githubusercontent.com/u/74556941?v=4","html_url":"https://github.com/dbilic98","gravatar_id":"","type":"User","site_admin":false,"url":"https://api.github.com/users/dbilic98","events_url":"https://api.github.com/users/dbilic98/events{/privacy}","following_url":"https://api.github.com/users/dbilic98/following{/other_user}","followers_url":"https://api.github.com/users/dbilic98/followers","gists_url":"https://api.github.com/users/dbilic98/gists{/gist_id}","organizations_url":"https://api.github.com/users/dbilic98/orgs","received_events_url":"https://api.github.com/users/dbilic98/received_events","repos_url":"https://api.github.com/users/dbilic98/repos","starred_url":"https://api.github.com/users/dbilic98/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dbilic98/subscriptions"},"assignee":{"login":"dbilic98","id":74556941,"node_id":"MDQ6VXNlcjc0NTU2OTQx","avatar_url":"https://avatars.githubusercontent.com/u/74556941?v=4","html_url":"https://github.com/dbilic98","gravatar_id":"","type":"User","site_admin":false,"url":"https://api.github.com/users/dbilic98","events_url":"https://api.github.com/users/dbilic98/events{/privacy}","following_url":"https://api.github.com/users/dbilic98/following{/other_user}","followers_url":"https://api.github.com/users/dbilic98/followers","gists_url":"https://api.github.com/users/dbilic98/gists{/gist_id}","organizations_url":"https://api.github.com/users/dbilic98/orgs","received_events_url":"https://api.github.com/users/dbilic98/received_events","repos_url":"https://api.github.com/users/dbilic98/repos","starred_url":"https://api.github.com/users/dbilic98/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dbilic98/subscriptions"},"comments":0,"created_at":"2026-04-13T15:06:50Z","updated_at":"2026-04-13T15:10:55Z","url":"https://api.github.com/repos/dbilic98/library-app/issues/7","html_url":"https://github.com/dbilic98/library-app/pull/7","comments_url":"https://api.github.com/repos/dbilic98/library-app/issues/7/comments","events_url":"https://api.github.com/repos/dbilic98/library-app/issues/7/events","labels_url":"https://api.github.com/repos/dbilic98/library-app/issues/7/labels{/name}","repository_url":"https://api.github.com/repos/dbilic98/library-app","pull_request":{"url":"https://api.github.com/repos/dbilic98/library-app/pulls/7","html_url":"https://github.com/dbilic98/library-app/pull/7","diff_url":"https://github.com/dbilic98/library-app/pull/7.diff","patch_url":"https://github.com/dbilic98/library-app/pull/7.patch"},"reactions":{"total_count":0,"+1":0,"-1":0,"laugh":0,"confused":0,"heart":0,"hooray":0,"rocket":0,"eyes":0,"url":"https://api.github.com/repos/dbilic98/library-app/issues/7/reactions"},"assignees":[{"login":"dbilic98","id":74556941,"node_id":"MDQ6VXNlcjc0NTU2OTQx","avatar_url":"https://avatars.githubusercontent.com/u/74556941?v=4","html_url":"https://github.com/dbilic98","gravatar_id":"","type":"User","site_admin":false,"url":"https://api.github.com/users/dbilic98","events_url":"https://api.github.com/users/dbilic98/events{/privacy}","following_url":"https://api.github.com/users/dbilic98/following{/other_user}","followers_url":"https://api.github.com/users/dbilic98/followers","gists_url":"https://api.github.com/users/dbilic98/gists{/gist_id}","organizations_url":"https://api.github.com/users/dbilic98/orgs","received_events_url":"https://api.github.com/users/dbilic98/received_events","repos_url":"https://api.github.com/users/dbilic98/repos","starred_url":"https://api.github.com/users/dbilic98/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dbilic98/subscriptions"}],"node_id":"PR_kwDORDUNds7SBYZw","draft":false},{"id":4281270362,"number":73,"state":"open","locked":false,"title":"docs: Note Transport Service book","body":"## Summary\n\nThe book in #41 was authored against the earlier `miden-private-transport` naming and a prototype OTEL flag, neither of which matches the code today. This PR fixes the factual inaccuracies so that copy/pasted commands actually work, without touching structure or content.\n\nTargets `ev/docs` so it can be merged into #41 before that PR lands on `main`.\n\n### What changed (all under `docs/`)\n\n- Repo URL: `miden-private-transport` → `note-transport-service` (the canonical GitHub slug).\n- Crate and binary names: `miden-private-transport-*` → `miden-note-transport-*` (matches `crates/{node,proto}/Cargo.toml` and `bin/node/Cargo.toml`).\n- `usage.md` example: `--port 9730` → `--port 57292` (matches `bin/node/src/main.rs:17`).\n- OTEL config rewritten: the `--enable-otel` CLI flag and `MIDEN_TLNODE_ENABLE_OTEL` env var do not exist in the code. Replaced with the env vars actually read by `crates/node/src/logging.rs` — `OTEL_ENABLED`, `OTEL_TRACES_ENDPOINT`, `JSON_LOGGING`.\n- Metric names now carry the `grpc_` / `db_` namespace prefixes registered in `crates/node/src/metrics.rs`. `send_note_size` → `grpc_send_note_note_size`, and `fetch_notes_replied_notes_number` is a Histogram, not a Counter.\n- Proto reference in `user/rpc.md`: corrected to `proto/proto/miden_note_transport.proto` (standalone `proto/` workspace member, not `crates/proto`).\n- Migrations section in `developer/components.md`: replaced \"not in use yet\" with the actual behaviour — `diesel_migrations` runs on startup (`crates/node/src/database/sqlite/migrations.rs`).\n- `installation.md` Rust MSRV: 1.89 → 1.87 (matches workspace `Cargo.toml` `rust-version`).\n- Dropped stray `}` left behind under the database metrics table in `monitoring.md`.\n\nNo Rust code is touched. No files outside `docs/` are touched.\n\n## Out of scope (flagged for a follow-up)\n\n- `EXPORTED.md` lists `user/` but not `developer/`, which is inconsistent with `SUMMARY.md`. I did not change this because it may be intentional (developer docs stay local to this repo rather than being surfaced in the aggregated Miden book).\n- `installation.md` still links to a `#bootstrapping` anchor in `usage.md` that does not exist. The transport-layer node has no bootstrap step; either the cross-link should be removed or `usage.md` should grow that section. Left alone pending author intent.\n- `book.toml` fails to build with mdBook ≥ 0.5 locally (`multilingual` field is unsupported, and the `katex` / `alerts` / `linkcheck` preprocessors aren't wired into CI here). Not in scope for a naming-fixup PR, but worth a follow-up so CI can actually gate the book build.\n\n## Test plan\n\n- [ ] `grep -rn 'miden-private-transport\\|MIDEN_TLNODE\\|--enable-otel\\|\\b9730\\b' docs/` returns no hits.\n- [ ] Skim-read the monitoring metric names against `crates/node/src/metrics.rs` and confirm they agree.\n- [ ] Render the book locally (once `book.toml` is compatible with installed mdBook) and verify no broken internal links.\n\n🤖 Generated with [Claude Code](https://claude.com/claude-code)","author_association":"COLLABORATOR","user":{"login":"mmagician","id":8402446,"node_id":"MDQ6VXNlcjg0MDI0NDY=","avatar_url":"https://avatars.githubusercontent.com/u/8402446?v=4","html_url":"https://github.com/mmagician","gravatar_id":"","type":"User","site_admin":false,"url":"https://api.github.com/users/mmagician","events_url":"https://api.github.com/users/mmagician/events{/privacy}","following_url":"https://api.github.com/users/mmagician/following{/other_user}","followers_url":"https://api.github.com/users/mmagician/followers","gists_url":"https://api.github.com/users/mmagician/gists{/gist_id}","organizations_url":"https://api.github.com/users/mmagician/orgs","received_events_url":"https://api.github.com/users/mmagician/received_events","repos_url":"https://api.github.com/users/mmagician/repos","starred_url":"https://api.github.com/users/mmagician/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mmagician/subscriptions"},"comments":0,"created_at":"2026-04-17T08:37:49Z","updated_at":"2026-04-17T16:31:27Z","url":"https://api.github.com/repos/0xMiden/note-transport-service/issues/73","html_url":"https://github.com/0xMiden/note-transport-service/pull/73","comments_url":"https://api.github.com/repos/0xMiden/note-transport-service/issues/73/comments","events_url":"https://api.github.com/repos/0xMiden/note-transport-service/issues/73/events","labels_url":"https://api.github.com/repos/0xMiden/note-transport-service/issues/73/labels{/name}","repository_url":"https://api.github.com/repos/0xMiden/note-transport-service","pull_request":{"url":"https://api.github.com/repos/0xMiden/note-transport-service/pulls/73","html_url":"https://github.com/0xMiden/note-transport-service/pull/73","diff_url":"https://github.com/0xMiden/note-transport-service/pull/73.diff","patch_url":"https://github.com/0xMiden/note-transport-service/pull/73.patch"},"reactions":{"total_count":0,"+1":0,"-1":0,"laugh":0,"confused":0,"heart":0,"hooray":0,"rocket":0,"eyes":0,"url":"https://api.github.com/repos/0xMiden/note-transport-service/issues/73/reactions"},"node_id":"PR_kwDOPWAkPc7TPqPS","draft":false},{"id":4324363414,"number":1,"state":"open","locked":false,"title":"Implement Book entity, repository, service and properties","author_association":"OWNER","user":{"login":"tsuki99","id":127057886,"node_id":"U_kgDOB5K_3g","avatar_url":"https://avatars.githubusercontent.com/u/127057886?v=4","html_url":"https://github.com/tsuki99","gravatar_id":"","type":"User","site_admin":false,"url":"https://api.github.com/users/tsuki99","events_url":"https://api.github.com/users/tsuki99/events{/privacy}","following_url":"https://api.github.com/users/tsuki99/following{/other_user}","followers_url":"https://api.github.com/users/tsuki99/followers","gists_url":"https://api.github.com/users/tsuki99/gists{/gist_id}","organizations_url":"https://api.github.com/users/tsuki99/orgs","received_events_url":"https://api.github.com/users/tsuki99/received_events","repos_url":"https://api.github.com/users/tsuki99/repos","starred_url":"https://api.github.com/users/tsuki99/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tsuki99/subscriptions"},"comments":0,"created_at":"2026-04-24T16:49:09Z","updated_at":"2026-04-27T09:33:07Z","url":"https://api.github.com/repos/tsuki99/online-book-store/issues/1","html_url":"https://github.com/tsuki99/online-book-store/pull/1","comments_url":"https://api.github.com/repos/tsuki99/online-book-store/issues/1/comments","events_url":"https://api.github.com/repos/tsuki99/online-book-store/issues/1/events","labels_url":"https://api.github.com/repos/tsuki99/online-book-store/issues/1/labels{/name}","repository_url":"https://api.github.com/repos/tsuki99/online-book-store","pull_request":{"url":"https://api.github.com/repos/tsuki99/online-book-store/pulls/1","html_url":"https://github.com/tsuki99/online-book-store/pull/1","diff_url":"https://github.com/tsuki99/online-book-store/pull/1.diff","patch_url":"https://github.com/tsuki99/online-book-store/pull/1.patch"},"reactions":{"total_count":0,"+1":0,"-1":0,"laugh":0,"confused":0,"heart":0,"hooray":0,"rocket":0,"eyes":0,"url":"https://api.github.com/repos/tsuki99/online-book-store/issues/1/reactions"},"node_id":"PR_kwDOSLoSds7VZ-yk","draft":false},{"id":4193053641,"number":4,"state":"open","locked":false,"title":"Feature/uc3 address book service layer","author_association":"OWNER","user":{"login":"SKarthik12321","id":90695207,"node_id":"MDQ6VXNlcjkwNjk1MjA3","avatar_url":"https://avatars.githubusercontent.com/u/90695207?v=4","html_url":"https://github.com/SKarthik12321","gravatar_id":"","type":"User","site_admin":false,"url":"https://api.github.com/users/SKarthik12321","events_url":"https://api.github.com/users/SKarthik12321/events{/privacy}","following_url":"https://api.github.com/users/SKarthik12321/following{/other_user}","followers_url":"https://api.github.com/users/SKarthik12321/followers","gists_url":"https://api.github.com/users/SKarthik12321/gists{/gist_id}","organizations_url":"https://api.github.com/users/SKarthik12321/orgs","received_events_url":"https://api.github.com/users/SKarthik12321/received_events","repos_url":"https://api.github.com/users/SKarthik12321/repos","starred_url":"https://api.github.com/users/SKarthik12321/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SKarthik12321/subscriptions"},"comments":0,"created_at":"2026-04-02T09:01:11Z","updated_at":"2026-04-02T09:01:11Z","url":"https://api.github.com/repos/SKarthik12321/AddressBook-App-SpringBoot/issues/4","html_url":"https://github.com/SKarthik12321/AddressBook-App-SpringBoot/pull/4","comments_url":"https://api.github.com/repos/SKarthik12321/AddressBook-App-SpringBoot/issues/4/comments","events_url":"https://api.github.com/repos/SKarthik12321/AddressBook-App-SpringBoot/issues/4/events","labels_url":"https://api.github.com/repos/SKarthik12321/AddressBook-App-SpringBoot/issues/4/labels{/name}","repository_url":"https://api.github.com/repos/SKarthik12321/AddressBook-App-SpringBoot","pull_request":{"url":"https://api.github.com/repos/SKarthik12321/AddressBook-App-SpringBoot/pulls/4","html_url":"https://github.com/SKarthik12321/AddressBook-App-SpringBoot/pull/4","diff_url":"https://github.com/SKarthik12321/AddressBook-App-SpringBoot/pull/4.diff","patch_url":"https://github.com/SKarthik12321/AddressBook-App-SpringBoot/pull/4.patch"},"reactions":{"total_count":0,"+1":0,"-1":0,"laugh":0,"confused":0,"heart":0,"hooray":0,"rocket":0,"eyes":0,"url":"https://api.github.com/repos/SKarthik12321/AddressBook-App-SpringBoot/issues/4/reactions"},"node_id":"PR_kwDOR3xKcc7PfudR","draft":false},{"id":4066634749,"number":24,"state":"open","locked":false,"title":"Update address_book_service.py","body":"updated Add_contact part","author_association":"COLLABORATOR","user":{"login":"yuli-pdm","id":254485314,"node_id":"U_kgDODysjQg","avatar_url":"https://avatars.githubusercontent.com/u/254485314?v=4","html_url":"https://github.com/yuli-pdm","gravatar_id":"","type":"User","site_admin":false,"url":"https://api.github.com/users/yuli-pdm","events_url":"https://api.github.com/users/yuli-pdm/events{/privacy}","following_url":"https://api.github.com/users/yuli-pdm/following{/other_user}","followers_url":"https://api.github.com/users/yuli-pdm/followers","gists_url":"https://api.github.com/users/yuli-pdm/gists{/gist_id}","organizations_url":"https://api.github.com/users/yuli-pdm/orgs","received_events_url":"https://api.github.com/users/yuli-pdm/received_events","repos_url":"https://api.github.com/users/yuli-pdm/repos","starred_url":"https://api.github.com/users/yuli-pdm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yuli-pdm/subscriptions"},"comments":0,"created_at":"2026-03-12T19:01:26Z","updated_at":"2026-03-12T19:01:26Z","url":"https://api.github.com/repos/AideNaDa/PersonalAssistant-GoIT/issues/24","html_url":"https://github.com/AideNaDa/PersonalAssistant-GoIT/pull/24","comments_url":"https://api.github.com/repos/AideNaDa/PersonalAssistant-GoIT/issues/24/comments","events_url":"https://api.github.com/repos/AideNaDa/PersonalAssistant-GoIT/issues/24/events","labels_url":"https://api.github.com/repos/AideNaDa/PersonalAssistant-GoIT/issues/24/labels{/name}","repository_url":"https://api.github.com/repos/AideNaDa/PersonalAssistant-GoIT","pull_request":{"url":"https://api.github.com/repos/AideNaDa/PersonalAssistant-GoIT/pulls/24","html_url":"https://github.com/AideNaDa/PersonalAssistant-GoIT/pull/24","diff_url":"https://github.com/AideNaDa/PersonalAssistant-GoIT/pull/24.diff","patch_url":"https://github.com/AideNaDa/PersonalAssistant-GoIT/pull/24.patch"},"reactions":{"total_count":0,"+1":0,"-1":0,"laugh":0,"confused":0,"heart":0,"hooray":0,"rocket":0,"eyes":0,"url":"https://api.github.com/repos/AideNaDa/PersonalAssistant-GoIT/issues/24/reactions"},"node_id":"PR_kwDORVL5hc7KI0Bi","draft":false},{"id":4066611432,"number":23,"state":"open","locked":false,"title":"Update address_book_service.py","body":"updated validation","author_association":"COLLABORATOR","user":{"login":"yuli-pdm","id":254485314,"node_id":"U_kgDODysjQg","avatar_url":"https://avatars.githubusercontent.com/u/254485314?v=4","html_url":"https://github.com/yuli-pdm","gravatar_id":"","type":"User","site_admin":false,"url":"https://api.github.com/users/yuli-pdm","events_url":"https://api.github.com/users/yuli-pdm/events{/privacy}","following_url":"https://api.github.com/users/yuli-pdm/following{/other_user}","followers_url":"https://api.github.com/users/yuli-pdm/followers","gists_url":"https://api.github.com/users/yuli-pdm/gists{/gist_id}","organizations_url":"https://api.github.com/users/yuli-pdm/orgs","received_events_url":"https://api.github.com/users/yuli-pdm/received_events","repos_url":"https://api.github.com/users/yuli-pdm/repos","starred_url":"https://api.github.com/users/yuli-pdm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yuli-pdm/subscriptions"},"comments":0,"created_at":"2026-03-12T18:56:59Z","updated_at":"2026-03-12T18:56:59Z","url":"https://api.github.com/repos/AideNaDa/PersonalAssistant-GoIT/issues/23","html_url":"https://github.com/AideNaDa/PersonalAssistant-GoIT/pull/23","comments_url":"https://api.github.com/repos/AideNaDa/PersonalAssistant-GoIT/issues/23/comments","events_url":"https://api.github.com/repos/AideNaDa/PersonalAssistant-GoIT/issues/23/events","labels_url":"https://api.github.com/repos/AideNaDa/PersonalAssistant-GoIT/issues/23/labels{/name}","repository_url":"https://api.github.com/repos/AideNaDa/PersonalAssistant-GoIT","pull_request":{"url":"https://api.github.com/repos/AideNaDa/PersonalAssistant-GoIT/pulls/23","html_url":"https://github.com/AideNaDa/PersonalAssistant-GoIT/pull/23","diff_url":"https://github.com/AideNaDa/PersonalAssistant-GoIT/pull/23.diff","patch_url":"https://github.com/AideNaDa/PersonalAssistant-GoIT/pull/23.patch"},"reactions":{"total_count":0,"+1":0,"-1":0,"laugh":0,"confused":0,"heart":0,"hooray":0,"rocket":0,"eyes":0,"url":"https://api.github.com/repos/AideNaDa/PersonalAssistant-GoIT/issues/23/reactions"},"node_id":"PR_kwDORVL5hc7KIvCy","draft":false},{"id":4064021433,"number":17,"state":"open","locked":false,"title":"Update address_book_service.py","body":"updated naming","author_association":"COLLABORATOR","user":{"login":"yuli-pdm","id":254485314,"node_id":"U_kgDODysjQg","avatar_url":"https://avatars.githubusercontent.com/u/254485314?v=4","html_url":"https://github.com/yuli-pdm","gravatar_id":"","type":"User","site_admin":false,"url":"https://api.github.com/users/yuli-pdm","events_url":"https://api.github.com/users/yuli-pdm/events{/privacy}","following_url":"https://api.github.com/users/yuli-pdm/following{/other_user}","followers_url":"https://api.github.com/users/yuli-pdm/followers","gists_url":"https://api.github.com/users/yuli-pdm/gists{/gist_id}","organizations_url":"https://api.github.com/users/yuli-pdm/orgs","received_events_url":"https://api.github.com/users/yuli-pdm/received_events","repos_url":"https://api.github.com/users/yuli-pdm/repos","starred_url":"https://api.github.com/users/yuli-pdm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yuli-pdm/subscriptions"},"comments":0,"created_at":"2026-03-12T11:35:30Z","updated_at":"2026-03-12T11:35:30Z","url":"https://api.github.com/repos/AideNaDa/PersonalAssistant-GoIT/issues/17","html_url":"https://github.com/AideNaDa/PersonalAssistant-GoIT/pull/17","comments_url":"https://api.github.com/repos/AideNaDa/PersonalAssistant-GoIT/issues/17/comments","events_url":"https://api.github.com/repos/AideNaDa/PersonalAssistant-GoIT/issues/17/events","labels_url":"https://api.github.com/repos/AideNaDa/PersonalAssistant-GoIT/issues/17/labels{/name}","repository_url":"https://api.github.com/repos/AideNaDa/PersonalAssistant-GoIT","pull_request":{"url":"https://api.github.com/repos/AideNaDa/PersonalAssistant-GoIT/pulls/17","html_url":"https://github.com/AideNaDa/PersonalAssistant-GoIT/pull/17","diff_url":"https://github.com/AideNaDa/PersonalAssistant-GoIT/pull/17.diff","patch_url":"https://github.com/AideNaDa/PersonalAssistant-GoIT/pull/17.patch"},"reactions":{"total_count":0,"+1":0,"-1":0,"laugh":0,"confused":0,"heart":0,"hooray":0,"rocket":0,"eyes":0,"url":"https://api.github.com/repos/AideNaDa/PersonalAssistant-GoIT/issues/17/reactions"},"node_id":"PR_kwDORVL5hc7KAMyO","draft":false},{"id":4086579525,"number":1,"state":"open","locked":false,"title":"Added issue book functionality using service layer","author_association":"COLLABORATOR","user":{"login":"aaryajoshi-24","id":228162039,"node_id":"U_kgDODZl59w","avatar_url":"https://avatars.githubusercontent.com/u/228162039?v=4","html_url":"https://github.com/aaryajoshi-24","gravatar_id":"","type":"User","site_admin":false,"url":"https://api.github.com/users/aaryajoshi-24","events_url":"https://api.github.com/users/aaryajoshi-24/events{/privacy}","following_url":"https://api.github.com/users/aaryajoshi-24/following{/other_user}","followers_url":"https://api.github.com/users/aaryajoshi-24/followers","gists_url":"https://api.github.com/users/aaryajoshi-24/gists{/gist_id}","organizations_url":"https://api.github.com/users/aaryajoshi-24/orgs","received_events_url":"https://api.github.com/users/aaryajoshi-24/received_events","repos_url":"https://api.github.com/users/aaryajoshi-24/repos","starred_url":"https://api.github.com/users/aaryajoshi-24/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/aaryajoshi-24/subscriptions"},"comments":0,"created_at":"2026-03-17T06:49:24Z","updated_at":"2026-04-27T14:34:36Z","url":"https://api.github.com/repos/gaurI1203-alt/Libray-System1/issues/1","html_url":"https://github.com/gaurI1203-alt/Libray-System1/pull/1","comments_url":"https://api.github.com/repos/gaurI1203-alt/Libray-System1/issues/1/comments","events_url":"https://api.github.com/repos/gaurI1203-alt/Libray-System1/issues/1/events","labels_url":"https://api.github.com/repos/gaurI1203-alt/Libray-System1/issues/1/labels{/name}","repository_url":"https://api.github.com/repos/gaurI1203-alt/Libray-System1","pull_request":{"url":"https://api.github.com/repos/gaurI1203-alt/Libray-System1/pulls/1","html_url":"https://github.com/gaurI1203-alt/Libray-System1/pull/1","diff_url":"https://github.com/gaurI1203-alt/Libray-System1/pull/1.diff","patch_url":"https://github.com/gaurI1203-alt/Libray-System1/pull/1.patch"},"reactions":{"total_count":0,"+1":0,"-1":0,"laugh":0,"confused":0,"heart":0,"hooray":0,"rocket":0,"eyes":0,"url":"https://api.github.com/repos/gaurI1203-alt/Libray-System1/issues/1/reactions"},"node_id":"PR_kwDORD8hms7LIHr7","draft":false},{"id":4360305723,"number":1,"state":"open","locked":false,"title":"feat: implement book entity, repository and service with H2 tests","body":"In this PR, I implemented the initial structure for the Online Book Store project.\r\nCreated the Book entity with required fields (title, author, isbn, price, etc.).\r\n\r\nImplemented BookRepository and BookRepositoryImpl using Hibernate SessionFactory.\r\n\r\nConfigured MySQL for development and H2 for testing.","author_association":"OWNER","user":{"login":"egorkharaim","id":230544441,"node_id":"U_kgDODb3UOQ","avatar_url":"https://avatars.githubusercontent.com/u/230544441?v=4","html_url":"https://github.com/egorkharaim","gravatar_id":"","type":"User","site_admin":false,"url":"https://api.github.com/users/egorkharaim","events_url":"https://api.github.com/users/egorkharaim/events{/privacy}","following_url":"https://api.github.com/users/egorkharaim/following{/other_user}","followers_url":"https://api.github.com/users/egorkharaim/followers","gists_url":"https://api.github.com/users/egorkharaim/gists{/gist_id}","organizations_url":"https://api.github.com/users/egorkharaim/orgs","received_events_url":"https://api.github.com/users/egorkharaim/received_events","repos_url":"https://api.github.com/users/egorkharaim/repos","starred_url":"https://api.github.com/users/egorkharaim/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/egorkharaim/subscriptions"},"comments":0,"created_at":"2026-04-30T18:13:50Z","updated_at":"2026-05-01T22:13:03Z","url":"https://api.github.com/repos/egorkharaim/online-book-store/issues/1","html_url":"https://github.com/egorkharaim/online-book-store/pull/1","comments_url":"https://api.github.com/repos/egorkharaim/online-book-store/issues/1/comments","events_url":"https://api.github.com/repos/egorkharaim/online-book-store/issues/1/events","labels_url":"https://api.github.com/repos/egorkharaim/online-book-store/issues/1/labels{/name}","repository_url":"https://api.github.com/repos/egorkharaim/online-book-store","pull_request":{"url":"https://api.github.com/repos/egorkharaim/online-book-store/pulls/1","html_url":"https://github.com/egorkharaim/online-book-store/pull/1","diff_url":"https://github.com/egorkharaim/online-book-store/pull/1.diff","patch_url":"https://github.com/egorkharaim/online-book-store/pull/1.patch"},"reactions":{"total_count":0,"+1":0,"-1":0,"laugh":0,"confused":0,"heart":0,"hooray":0,"rocket":0,"eyes":0,"url":"https://api.github.com/repos/egorkharaim/online-book-store/issues/1/reactions"},"node_id":"PR_kwDOSQnWkM7XNrCJ","draft":false},{"id":4067111435,"number":29,"state":"open","locked":false,"title":"Revert \"Update address_book_service.py\"","body":"Reverts AideNaDa/PersonalAssistant-GoIT#25","author_association":"OWNER","user":{"login":"AideNaDa","id":152689555,"node_id":"U_kgDOCRnbkw","avatar_url":"https://avatars.githubusercontent.com/u/152689555?v=4","html_url":"https://github.com/AideNaDa","gravatar_id":"","type":"User","site_admin":false,"url":"https://api.github.com/users/AideNaDa","events_url":"https://api.github.com/users/AideNaDa/events{/privacy}","following_url":"https://api.github.com/users/AideNaDa/following{/other_user}","followers_url":"https://api.github.com/users/AideNaDa/followers","gists_url":"https://api.github.com/users/AideNaDa/gists{/gist_id}","organizations_url":"https://api.github.com/users/AideNaDa/orgs","received_events_url":"https://api.github.com/users/AideNaDa/received_events","repos_url":"https://api.github.com/users/AideNaDa/repos","starred_url":"https://api.github.com/users/AideNaDa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AideNaDa/subscriptions"},"comments":0,"created_at":"2026-03-12T20:36:06Z","updated_at":"2026-03-12T20:36:06Z","url":"https://api.github.com/repos/AideNaDa/PersonalAssistant-GoIT/issues/29","html_url":"https://github.com/AideNaDa/PersonalAssistant-GoIT/pull/29","comments_url":"https://api.github.com/repos/AideNaDa/PersonalAssistant-GoIT/issues/29/comments","events_url":"https://api.github.com/repos/AideNaDa/PersonalAssistant-GoIT/issues/29/events","labels_url":"https://api.github.com/repos/AideNaDa/PersonalAssistant-GoIT/issues/29/labels{/name}","repository_url":"https://api.github.com/repos/AideNaDa/PersonalAssistant-GoIT","pull_request":{"url":"https://api.github.com/repos/AideNaDa/PersonalAssistant-GoIT/pulls/29","html_url":"https://github.com/AideNaDa/PersonalAssistant-GoIT/pull/29","diff_url":"https://github.com/AideNaDa/PersonalAssistant-GoIT/pull/29.diff","patch_url":"https://github.com/AideNaDa/PersonalAssistant-GoIT/pull/29.patch"},"reactions":{"total_count":0,"+1":0,"-1":0,"laugh":0,"confused":0,"heart":0,"hooray":0,"rocket":0,"eyes":0,"url":"https://api.github.com/repos/AideNaDa/PersonalAssistant-GoIT/issues/29/reactions"},"node_id":"PR_kwDORVL5hc7KKYXz","draft":false},{"id":4075828357,"number":1,"state":"open","locked":false,"title":"Add book-printing-service-registry smart contract","body":"Built a smart contract that handles the core business logic for book-printing-service-registry.\n\n# # Key Features\n- Production-ready Clarity implementation\n- Proper error handling and validation\n- Efficient data structure usage\n\n# # Implementation Details\nThis contract provides the foundational functionality needed to support the book-printing-service-registry business requirements.\n\n# # Next Steps\nReady for code review and integration.","author_association":"OWNER","user":{"login":"posiobateru-create","id":232344874,"node_id":"U_kgDODdlNKg","avatar_url":"https://avatars.githubusercontent.com/u/232344874?v=4","html_url":"https://github.com/posiobateru-create","gravatar_id":"","type":"User","site_admin":false,"url":"https://api.github.com/users/posiobateru-create","events_url":"https://api.github.com/users/posiobateru-create/events{/privacy}","following_url":"https://api.github.com/users/posiobateru-create/following{/other_user}","followers_url":"https://api.github.com/users/posiobateru-create/followers","gists_url":"https://api.github.com/users/posiobateru-create/gists{/gist_id}","organizations_url":"https://api.github.com/users/posiobateru-create/orgs","received_events_url":"https://api.github.com/users/posiobateru-create/received_events","repos_url":"https://api.github.com/users/posiobateru-create/repos","starred_url":"https://api.github.com/users/posiobateru-create/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/posiobateru-create/subscriptions"},"comments":0,"created_at":"2026-03-14T13:29:25Z","updated_at":"2026-03-14T13:29:30Z","url":"https://api.github.com/repos/posiobateru-create/book-printing-service-registry/issues/1","html_url":"https://github.com/posiobateru-create/book-printing-service-registry/pull/1","comments_url":"https://api.github.com/repos/posiobateru-create/book-printing-service-registry/issues/1/comments","events_url":"https://api.github.com/repos/posiobateru-create/book-printing-service-registry/issues/1/events","labels_url":"https://api.github.com/repos/posiobateru-create/book-printing-service-registry/issues/1/labels{/name}","repository_url":"https://api.github.com/repos/posiobateru-create/book-printing-service-registry","pull_request":{"url":"https://api.github.com/repos/posiobateru-create/book-printing-service-registry/pulls/1","html_url":"https://github.com/posiobateru-create/book-printing-service-registry/pull/1","diff_url":"https://github.com/posiobateru-create/book-printing-service-registry/pull/1.diff","patch_url":"https://github.com/posiobateru-create/book-printing-service-registry/pull/1.patch"},"reactions":{"total_count":0,"+1":0,"-1":0,"laugh":0,"confused":0,"heart":0,"hooray":0,"rocket":0,"eyes":0,"url":"https://api.github.com/repos/posiobateru-create/book-printing-service-registry/issues/1/reactions"},"node_id":"PR_kwDORm783M7KmpbO","draft":false},{"id":3579525500,"number":1,"state":"open","locked":false,"title":"Book Service","body":"# 🎉 Initial Release: Book Verse - Book Service Microservice\r\n\r\n## 📋 Overview\r\nThis PR introduces the **Book Verse Book Service**, a production-ready Spring Boot microservice that manages the book catalog for the Book Verse platform. This is the initial implementation with complete CRUD operations, advanced search capabilities, external service integration, and comprehensive security.\r\n\r\n---\r\n\r\n## 🚀 What's Included\r\n\r\n### ✨ Core Features Implemented\r\n\r\n#### 1. **Book CRUD Operations**\r\n- Create, Read, Update, and Delete operations for books\r\n- Role-based access control (Admin-only for write operations)\r\n- Input validation with detailed error messages\r\n- RESTful API design following best practices\r\n\r\n**Endpoints:**\r\n- `GET /api/book/{id}` - Retrieve book by ID\r\n- `POST /api/book` - Create new book (Admin only)\r\n- `PUT /api/book/{id}` - Update book (Admin only)\r\n- `DELETE /api/book/{id}` - Delete book (Admin only)\r\n\r\n#### 2. **Advanced Search \u0026 Discovery**\r\n- Multi-field search (title, author, genre)\r\n- Full-text search with MySQL MATCH AGAINST\r\n- Pagination support for efficient data retrieval\r\n- Combined filter queries\r\n\r\n**Endpoints:**\r\n- `GET /api/books` - Get all books (paginated)\r\n- `GET /api/books/search?query=...\u0026author=...\u0026genre=...` - Advanced search\r\n\r\n#### 3. **Book Details with Review Aggregation**\r\n- Fetch comprehensive book information with external reviews\r\n- **Asynchronous parallel processing** using CompletableFuture\r\n- Configurable rating calculation strategies\r\n- Graceful degradation when external services fail\r\n\r\n**Endpoint:**\r\n- `GET /api/book/{bookId}/details?reviewStrategy=averageRatingStrategy`\r\n\r\n---\r\n\r\n## 🏗️ Architecture \u0026 Design\r\n\r\n### **Layered Architecture**\r\n```\r\nControllers → Services → Repositories → Database\r\n ↓\r\n External Clients → Review Service\r\n```\r\n\r\n### **Design Patterns Implemented**\r\n- ✅ Controller-Service-Repository pattern\r\n- ✅ DTO (Data Transfer Object) pattern\r\n- ✅ Builder pattern (via Lombok)\r\n- ✅ Async pattern with CompletableFuture\r\n- ✅ Dependency Injection\r\n- ✅ Global Exception Handling\r\n\r\n### **Key Components**\r\n\r\n#### **Controllers** (3)\r\n- `BookCrudController` - CRUD operations with role-based security\r\n- `BookDetailsController` - Aggregated book details with reviews\r\n- `BookSearchController` - Search and discovery endpoints\r\n\r\n#### **Services** (3)\r\n- `BookCrudService` - Business logic for CRUD operations\r\n- `BookDetailsService` - **Async aggregation** of book + review data\r\n- `BookSearchService` - Search logic with multiple filter strategies\r\n\r\n#### **Repository**\r\n- `BookRepository` - JPA repository with custom query methods\r\n - Full-text search\r\n - Case-insensitive filtering\r\n - Pagination support\r\n\r\n#### **External Clients**\r\n- `ReviewServiceClient` - OpenFeign client for Review Service integration\r\n - Get reviews by book ID\r\n - Get average rating with strategy pattern\r\n\r\n#### **DTOs** (4)\r\n- `BookRequestDto` - Input validation for create/update\r\n- `BookResponseDto` - Standard book response\r\n- `BookDetailsResponseDto` - Enriched response with reviews + rating\r\n- `ReviewDto` - Review data from external service\r\n\r\n#### **Models**\r\n- `Book` - JPA entity with Lombok annotations\r\n- `UserRole` - Role enumeration for authorization\r\n\r\n---\r\n\r\n## 🔐 Security Implementation\r\n\r\n### **Gateway-Based Authentication**\r\n- Custom `GatewayHeaderAuthenticationFilter` \r\n- Extracts user information from HTTP headers:\r\n - `X-User-Id` - User identifier\r\n - `X-User-Roles` - Comma-separated roles\r\n- Creates Spring Security authentication context\r\n- **Stateless session management** for microservices\r\n\r\n### **Authorization Rules**\r\n| Endpoint Type | Access Level |\r\n|--------------|-------------|\r\n| Search \u0026 Read | Public |\r\n| Create/Update/Delete | ROLE_ADMIN only |\r\n\r\n### **Security Configuration**\r\n- CSRF disabled (stateless API)\r\n- Method-level security with `@PreAuthorize`\r\n- BCrypt password encoder\r\n- Custom authentication filter chain\r\n\r\n---\r\n\r\n## ⚡ Asynchronous Processing with CompletableFuture\r\n\r\n### **Implementation**\r\nWhen fetching book details, the service performs **3 parallel async operations**:\r\n1. Fetch book from database\r\n2. Fetch reviews from Review Service\r\n3. Fetch average rating from Review Service\r\n\r\n```java\r\nCompletableFuture\u003cBookResponseDto\u003e bookFuture = getBookById(bookId);\r\nCompletableFuture\u003cList\u003cReviewDto\u003e\u003e reviewsFuture = getReviewsForBook(bookId);\r\nCompletableFuture\u003cDouble\u003e ratingFuture = getBookAverageRating(bookId, strategy);\r\n\r\nCompletableFuture.allOf(bookFuture, reviewsFuture, ratingFuture).join();\r\n```\r\n\r\n### **Benefits**\r\n- ⚡ **60-70% faster response times** vs sequential calls\r\n- 🔄 Non-blocking I/O operations\r\n- 📈 Better resource utilization\r\n- 🛡️ Fault-tolerant - individual failures don't block other operations\r\n\r\n### **Thread Pool Configuration**\r\n- Core Pool: 5 threads\r\n- Max Pool: 10 threads\r\n- Queue Capacity: 100 tasks\r\n- Thread Naming: `BookServiceAsync-N`\r\n\r\n---\r\n\r\n## 🗄️ Database Management\r\n\r\n### **Flyway Migrations**\r\n- ✅ V1: Create books table with indexes\r\n- ✅ V2: Insert sample seed data (3 books)\r\n- Version-controlled schema changes\r\n- Automatic migration on startup\r\n\r\n### **Schema Design**\r\n```sql\r\nCREATE TABLE books (\r\n book_id INT AUTO_INCREMENT PRIMARY KEY,\r\n title VARCHAR(255) NOT NULL,\r\n author VARCHAR(255) NOT NULL,\r\n genre VARCHAR(100),\r\n published_date DATE\r\n);\r\n```\r\n\r\n### **Full-Text Search Support**\r\n- MySQL MATCH AGAINST for performant search\r\n- Indexed columns: title, author, genre\r\n\r\n---\r\n\r\n## 🚨 Exception Handling\r\n\r\n### **Global Exception Handler**\r\nCentralized error handling with `@RestControllerAdvice`:\r\n\r\n- ✅ **Validation Errors (400)** - Field-level validation messages\r\n- ✅ **Book Service Exceptions (500)** - Business logic errors\r\n- ✅ **External Service Exceptions (502)** - Upstream service failures\r\n- ✅ **Authorization Errors (403)** - Access denied\r\n- ✅ **Generic Exceptions (500)** - Unexpected errors\r\n\r\nAll responses follow consistent JSON structure with status, error type, and message.\r\n\r\n---\r\n\r\n## 🧪 Testing\r\n\r\n### **Comprehensive Test Coverage**\r\n\r\n#### **Controller Tests** (3 test classes)\r\n- `BookCrudControllerTest` - CRUD endpoint testing with security\r\n- `BookDetailsControllerTest` - Details aggregation testing\r\n- `BookSearchControllerTest` - Search functionality testing\r\n\r\n#### **Service Tests**\r\n- `BookCrudServiceTest` - Business logic validation\r\n- Mock external dependencies with Mockito\r\n\r\n#### **Testing Stack**\r\n- JUnit 5\r\n- Mockito for mocking\r\n- MockMvc for controller testing\r\n- Spring Security Test for authentication\r\n- `@WebMvcTest` for isolated controller tests\r\n\r\n---\r\n\r\n## 🛠️ Technology Stack\r\n\r\n### **Core Technologies**\r\n- ☕ **Java 17**\r\n- 🍃 **Spring Boot 3.5.7**\r\n- 📦 **Maven** - Build \u0026 dependency management\r\n\r\n### **Spring Ecosystem**\r\n- 🔹 Spring Data JPA - ORM \u0026 data access\r\n- 🔹 Spring Web - RESTful services\r\n- 🔹 Spring Security - Authentication \u0026 authorization\r\n- 🔹 Spring Cloud OpenFeign - Declarative REST clients\r\n- 🔹 Spring Cloud Netflix Eureka Client - Service discovery\r\n\r\n### **Database**\r\n- 🗄️ **MySQL 8.0**\r\n- 🔄 **Flyway 11.16.0** - Database migrations\r\n\r\n### **Dev Tools**\r\n- 🎯 **Lombok** - Reduce boilerplate code\r\n- 🔥 **Spring Boot DevTools** - Hot reload\r\n- 📝 **Validation API** - Input validation\r\n\r\n---\r\n\r\n## 📁 Project Structure\r\n\r\n```\r\nbookservice/\r\n├── src/main/java/com/bookverse/bookservice/\r\n│ ├── BookserviceApplication.java\r\n│ ├── client/\r\n│ │ └── ReviewServiceClient.java\r\n│ ├── config/\r\n│ │ ├── AsyncConfig.java\r\n│ │ ├── SecurityConfig.java\r\n│ │ └── GatewayHeaderAuthenticationFilter.java\r\n│ ├── controller/\r\n│ │ ├── BookCrudController.java\r\n│ │ ├── BookDetailsController.java\r\n│ │ └── BookSearchController.java\r\n│ ├── dto/\r\n│ │ ├── BookRequestDto.java\r\n│ │ ├── BookResponseDto.java\r\n│ │ ├── BookDetailsResponseDto.java\r\n│ │ └── ReviewDto.java\r\n│ ├── exception/\r\n│ │ ├── BookServiceException.java\r\n│ │ ├── ExternalServiceException.java\r\n│ │ └── GlobalExceptionHandler.java\r\n│ ├── mapper/\r\n│ │ └── BookMapper.java\r\n│ ├── model/\r\n│ │ ├── Book.java\r\n│ │ └── UserRole.java\r\n│ ├── repository/\r\n│ │ └── BookRepository.java\r\n│ └── service/\r\n│ ├── BookCrudService.java\r\n│ ├── BookDetailsService.java\r\n│ └── BookSearchService.java\r\n├── src/main/resources/\r\n│ ├── application.properties\r\n│ └── db/migration/\r\n│ ├── V1__create_books_table.sql\r\n│ └── V2__insert_sample_books.sql\r\n└── src/test/java/com/bookverse/bookservice/\r\n ├── controller/\r\n │ ├── BookCrudControllerTest.java\r\n │ ├── BookDetailsControllerTest.java\r\n │ └── BookSearchControllerTest.java\r\n └── service/\r\n └── BookCrudServiceTest.java\r\n```\r\n\r\n---\r\n\r\n## 🔧 Configuration\r\n\r\n### **Application Properties**\r\n```properties\r\nspring.application.name=book-service\r\nserver.port=8081\r\n\r\n# Database\r\nspring.datasource.url=jdbc:mysql://localhost:3306/book_db\r\nspring.jpa.hibernate.ddl-auto=validate\r\n\r\n# Flyway\r\nspring.flyway.enabled=true\r\nspring.flyway.locations=classpath:db/migration\r\n```\r\n\r\n---\r\n\r\n## 📊 Key Metrics \u0026 Performance\r\n\r\n### **Response Time Improvements**\r\n- Sequential calls: ~300-500ms\r\n- Parallel async calls: ~100-150ms\r\n- **Performance gain: 60-70% reduction**\r\n\r\n### **Scalability**\r\n- Stateless design for horizontal scaling\r\n- Connection pooling for database\r\n- Thread pool for async operations\r\n- Service discovery ready\r\n\r\n---\r\n\r\n## ✅ What's Working\r\n\r\n- ✅ Complete CRUD operations with validation\r\n- ✅ Advanced search with full-text support\r\n- ✅ Async aggregation of book details\r\n- ✅ Gateway-based authentication\r\n- ✅ Role-based authorization\r\n- ✅ Database migrations\r\n- ✅ Exception handling\r\n- ✅ Unit \u0026 integration tests\r\n- ✅ OpenFeign client integration\r\n- ✅ Service discovery (Eureka)\r\n- ✅ Comprehensive documentation\r\n\r\n---\r\n\r\n## 🚀 How to Run\r\n\r\n### **Prerequisites**\r\n- Java 17+\r\n- Maven 3.6+\r\n- MySQL 8.0+\r\n- Eureka Server (running)\r\n\r\n### **Setup**\r\n```bash\r\n# Create database\r\nCREATE DATABASE book_db;\r\n\r\n# Configure credentials in application.properties\r\n\r\n# Build \u0026 Run\r\n./mvnw clean install\r\n./mvnw spring-boot:run\r\n\r\n# Access service\r\ncurl http://localhost:8081/api/books\r\n```\r\n\r\n### **Run Tests**\r\n```bash\r\n./mvnw test\r\n```\r\n\r\n---\r\n\r\n## 🎯 Next Steps / Future Enhancements\r\n\r\n- [ ] Add circuit breaker with Resilience4j\r\n- [ ] Implement caching with Redis\r\n- [ ] Add API rate limiting\r\n- [ ] Implement GraphQL API\r\n- [ ] Add Swagger/OpenAPI documentation\r\n- [ ] Docker containerization\r\n- [ ] Kubernetes deployment configs\r\n- [ ] Add monitoring with Micrometer\r\n- [ ] Implement distributed tracing\r\n\r\n---\r\n\r\n## 📝 Documentation\r\n\r\n- ✅ Complete README with setup instructions\r\n- ✅ API documentation with examples\r\n- ✅ Architecture diagrams\r\n- ✅ Security flow documentation\r\n- ✅ Async processing explanation\r\n- ✅ Database schema \u0026 migrations\r\n- ✅ Testing guide\r\n\r\n---\r\n\r\n## 👥 Team Notes\r\n\r\n### **Code Quality**\r\n- Follows Java naming conventions\r\n- Uses Lombok to reduce boilerplate\r\n- Comprehensive JavaDoc comments\r\n- Clean code principles applied\r\n\r\n### **Testing Strategy**\r\n- Unit tests for business logic\r\n- Integration tests for controllers\r\n- Mock external dependencies\r\n- Security testing included\r\n\r\n### **Security Considerations**\r\n- No hardcoded credentials\r\n- Environment-based configuration\r\n- Stateless authentication\r\n- Role-based access control\r\n\r\n---\r\n\r\n## 📦 Dependencies Summary\r\n\r\n| Dependency | Version | Purpose |\r\n|-----------|---------|---------|\r\n| Spring Boot | 3.5.7 | Framework |\r\n| Java | 17 | Runtime |\r\n| MySQL | 8.0 | Database |\r\n| Flyway | 11.16.0 | Migrations |\r\n| Spring Cloud | 2025.0.0 | Microservices |\r\n| Lombok | Latest | Code generation |\r\n\r\n---\r\n\r\n## 🎉 Summary\r\n\r\nThis is a **production-ready microservice** with:\r\n- ✅ 3 controllers, 3 services, 1 repository\r\n- ✅ 10+ API endpoints\r\n- ✅ Async processing for performance\r\n- ✅ Comprehensive security\r\n- ✅ Full test coverage\r\n- ✅ Database migrations\r\n- ✅ External service integration\r\n- ✅ Complete documentation\r\n\r\n**Total Files:** 25+ Java classes, 2 SQL migrations, complete test suite\r\n\r\n---\r\n\r\n## 🔍 Review Checklist\r\n\r\n- [x] Code follows project standards\r\n- [x] All tests pass\r\n- [x] Security properly configured\r\n- [x] Database migrations tested\r\n- [x] External integrations working\r\n- [x] Error handling comprehensive\r\n- [x] Documentation complete\r\n- [x] No sensitive data exposed\r\n- [x] Async operations optimized\r\n- [x] Performance benchmarks met\r\n\r\n---\r\n\r\n## 🏷️ Labels\r\n`microservice` `spring-boot` `initial-release` `feature` `documentation`\r\n\r\n---\r\n\r\n**Ready for Review \u0026 Merge** ✅\r\n\r\nThis PR establishes the foundation for the Book Verse Book Service microservice with production-ready code, comprehensive testing, and complete documentation.\r\n\r\n---\r\n\r\n**Closes:** #\u003cissue-number\u003e (if applicable) \r\n**Reviewed by:** @\u003creviewer\u003e \r\n**Deployed to:** Development Environment\r\n\r\n---\r\n\r\n**Built with ❤️ by the Book Verse Team**","author_association":"OWNER","user":{"login":"riteshlavti","id":76099625,"node_id":"MDQ6VXNlcjc2MDk5NjI1","avatar_url":"https://avatars.githubusercontent.com/u/76099625?v=4","html_url":"https://github.com/riteshlavti","gravatar_id":"","type":"User","site_admin":false,"url":"https://api.github.com/users/riteshlavti","events_url":"https://api.github.com/users/riteshlavti/events{/privacy}","following_url":"https://api.github.com/users/riteshlavti/following{/other_user}","followers_url":"https://api.github.com/users/riteshlavti/followers","gists_url":"https://api.github.com/users/riteshlavti/gists{/gist_id}","organizations_url":"https://api.github.com/users/riteshlavti/orgs","received_events_url":"https://api.github.com/users/riteshlavti/received_events","repos_url":"https://api.github.com/users/riteshlavti/repos","starred_url":"https://api.github.com/users/riteshlavti/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/riteshlavti/subscriptions"},"comments":0,"created_at":"2025-11-02T13:01:33Z","updated_at":"2025-11-09T07:57:55Z","url":"https://api.github.com/repos/riteshlavti/book-verse/issues/1","html_url":"https://github.com/riteshlavti/book-verse/pull/1","comments_url":"https://api.github.com/repos/riteshlavti/book-verse/issues/1/comments","events_url":"https://api.github.com/repos/riteshlavti/book-verse/issues/1/events","labels_url":"https://api.github.com/repos/riteshlavti/book-verse/issues/1/labels{/name}","repository_url":"https://api.github.com/repos/riteshlavti/book-verse","pull_request":{"url":"https://api.github.com/repos/riteshlavti/book-verse/pulls/1","html_url":"https://github.com/riteshlavti/book-verse/pull/1","diff_url":"https://github.com/riteshlavti/book-verse/pull/1.diff","patch_url":"https://github.com/riteshlavti/book-verse/pull/1.patch"},"reactions":{"total_count":0,"+1":0,"-1":0,"laugh":0,"confused":0,"heart":0,"hooray":0,"rocket":0,"eyes":0,"url":"https://api.github.com/repos/riteshlavti/book-verse/issues/1/reactions"},"node_id":"PR_kwDOQNvM9M6xDz9a","draft":false},{"id":4324153589,"number":9,"state":"open","locked":false,"title":"Update Nationwide Cleaning Services website navigation and CTAs to point to /book","body":"🔗 **View agent run:** https://app.netlify.com/projects/velvety-ganache-2e1af8/agent-runs/69eb93ad530a127536ad95f6\n\n🤖 **Agent:** Claude\n\n💬 **Prompt:** Hi, I need you to make the following changes to the Nationwide Cleaning Services website. Please implement all items below:\n\n### 1. NAVIGATION UPDATE — Point \"Get a Free Quote\" to /book\n\nIn the site header/navigation, the \"Get a Free Quote\" button cu...\n\n✅ **Result:** ## Build fix\n\nThe deploy preview was failing due to two TypeScript errors in `src/layouts/BaseLayout.astro` where the Google Ads phone call conversion tracking script referenced the global `gtag` function directly. Because Astro processes inline `\u003cscript\u003e` blocks as TypeScript, the unknown global identifier caused `astro check` to fail with `Cannot find name 'gtag'`.\n\nThe references were updated to access `gtag` via `window` using a type cast, preserving the existing runtime behavior (the `typeof` guard still short-circuits when the Google tag has not loaded) while satisfying the type checker so the build can complete.\n","author_association":"NONE","user":{"login":"netlify-coding[bot]","id":224816602,"node_id":"BOT_kgDODWZt2g","avatar_url":"https://avatars.githubusercontent.com/in/1732200?v=4","html_url":"https://github.com/apps/netlify-coding","gravatar_id":"","type":"Bot","site_admin":false,"url":"https://api.github.com/users/netlify-coding%5Bbot%5D","events_url":"https://api.github.com/users/netlify-coding%5Bbot%5D/events{/privacy}","following_url":"https://api.github.com/users/netlify-coding%5Bbot%5D/following{/other_user}","followers_url":"https://api.github.com/users/netlify-coding%5Bbot%5D/followers","gists_url":"https://api.github.com/users/netlify-coding%5Bbot%5D/gists{/gist_id}","organizations_url":"https://api.github.com/users/netlify-coding%5Bbot%5D/orgs","received_events_url":"https://api.github.com/users/netlify-coding%5Bbot%5D/received_events","repos_url":"https://api.github.com/users/netlify-coding%5Bbot%5D/repos","starred_url":"https://api.github.com/users/netlify-coding%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/netlify-coding%5Bbot%5D/subscriptions"},"comments":1,"created_at":"2026-04-24T16:06:59Z","updated_at":"2026-04-24T16:07:27Z","url":"https://api.github.com/repos/TabSphere/nationwidecleaningserviceslimited/issues/9","html_url":"https://github.com/TabSphere/nationwidecleaningserviceslimited/pull/9","comments_url":"https://api.github.com/repos/TabSphere/nationwidecleaningserviceslimited/issues/9/comments","events_url":"https://api.github.com/repos/TabSphere/nationwidecleaningserviceslimited/issues/9/events","labels_url":"https://api.github.com/repos/TabSphere/nationwidecleaningserviceslimited/issues/9/labels{/name}","repository_url":"https://api.github.com/repos/TabSphere/nationwidecleaningserviceslimited","pull_request":{"url":"https://api.github.com/repos/TabSphere/nationwidecleaningserviceslimited/pulls/9","html_url":"https://github.com/TabSphere/nationwidecleaningserviceslimited/pull/9","diff_url":"https://github.com/TabSphere/nationwidecleaningserviceslimited/pull/9.diff","patch_url":"https://github.com/TabSphere/nationwidecleaningserviceslimited/pull/9.patch"},"reactions":{"total_count":0,"+1":0,"-1":0,"laugh":0,"confused":0,"heart":0,"hooray":0,"rocket":0,"eyes":0,"url":"https://api.github.com/repos/TabSphere/nationwidecleaningserviceslimited/issues/9/reactions"},"node_id":"PR_kwDORQZbA87VZSl5","draft":false},{"id":3857364738,"number":534,"state":"open","locked":false,"title":"py-solid-book-service-refactoring","body":"\u003cimg width=\"1307\" height=\"139\" alt=\"зображення\" src=\"https://github.com/user-attachments/assets/a3c06962-e4d3-4542-9bee-2e9be477101f\" /\u003e\r\n","author_association":"NONE","user":{"login":"ohorodnykostap","id":95187662,"node_id":"U_kgDOBaxyzg","avatar_url":"https://avatars.githubusercontent.com/u/95187662?v=4","html_url":"https://github.com/ohorodnykostap","gravatar_id":"","type":"User","site_admin":false,"url":"https://api.github.com/users/ohorodnykostap","events_url":"https://api.github.com/users/ohorodnykostap/events{/privacy}","following_url":"https://api.github.com/users/ohorodnykostap/following{/other_user}","followers_url":"https://api.github.com/users/ohorodnykostap/followers","gists_url":"https://api.github.com/users/ohorodnykostap/gists{/gist_id}","organizations_url":"https://api.github.com/users/ohorodnykostap/orgs","received_events_url":"https://api.github.com/users/ohorodnykostap/received_events","repos_url":"https://api.github.com/users/ohorodnykostap/repos","starred_url":"https://api.github.com/users/ohorodnykostap/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ohorodnykostap/subscriptions"},"comments":0,"created_at":"2026-01-26T19:36:58Z","updated_at":"2026-01-26T19:40:46Z","url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/issues/534","html_url":"https://github.com/mate-academy/py-solid-book-service-refactoring/pull/534","comments_url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/issues/534/comments","events_url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/issues/534/events","labels_url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/issues/534/labels{/name}","repository_url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring","pull_request":{"url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/pulls/534","html_url":"https://github.com/mate-academy/py-solid-book-service-refactoring/pull/534","diff_url":"https://github.com/mate-academy/py-solid-book-service-refactoring/pull/534.diff","patch_url":"https://github.com/mate-academy/py-solid-book-service-refactoring/pull/534.patch"},"reactions":{"total_count":0,"+1":0,"-1":0,"laugh":0,"confused":0,"heart":0,"hooray":0,"rocket":0,"eyes":0,"url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/issues/534/reactions"},"node_id":"PR_kwDOKAAMns6_cAvr","draft":false},{"id":3856265368,"number":528,"state":"open","locked":false,"title":"Py solid book service refactoring","author_association":"NONE","user":{"login":"Ann-Riabykina","id":238580716,"node_id":"U_kgDODjhz7A","avatar_url":"https://avatars.githubusercontent.com/u/238580716?v=4","html_url":"https://github.com/Ann-Riabykina","gravatar_id":"","type":"User","site_admin":false,"url":"https://api.github.com/users/Ann-Riabykina","events_url":"https://api.github.com/users/Ann-Riabykina/events{/privacy}","following_url":"https://api.github.com/users/Ann-Riabykina/following{/other_user}","followers_url":"https://api.github.com/users/Ann-Riabykina/followers","gists_url":"https://api.github.com/users/Ann-Riabykina/gists{/gist_id}","organizations_url":"https://api.github.com/users/Ann-Riabykina/orgs","received_events_url":"https://api.github.com/users/Ann-Riabykina/received_events","repos_url":"https://api.github.com/users/Ann-Riabykina/repos","starred_url":"https://api.github.com/users/Ann-Riabykina/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Ann-Riabykina/subscriptions"},"comments":0,"created_at":"2026-01-26T14:42:28Z","updated_at":"2026-01-26T14:51:08Z","url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/issues/528","html_url":"https://github.com/mate-academy/py-solid-book-service-refactoring/pull/528","comments_url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/issues/528/comments","events_url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/issues/528/events","labels_url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/issues/528/labels{/name}","repository_url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring","pull_request":{"url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/pulls/528","html_url":"https://github.com/mate-academy/py-solid-book-service-refactoring/pull/528","diff_url":"https://github.com/mate-academy/py-solid-book-service-refactoring/pull/528.diff","patch_url":"https://github.com/mate-academy/py-solid-book-service-refactoring/pull/528.patch"},"reactions":{"total_count":0,"+1":0,"-1":0,"laugh":0,"confused":0,"heart":0,"hooray":0,"rocket":0,"eyes":0,"url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/issues/528/reactions"},"node_id":"PR_kwDOKAAMns6_YZSg","draft":false},{"id":3774401158,"number":2,"state":"open","locked":false,"title":"implementation for book service feature","author_association":"COLLABORATOR","user":{"login":"Chanchhay","id":190688717,"node_id":"U_kgDOC12tzQ","avatar_url":"https://avatars.githubusercontent.com/u/190688717?v=4","html_url":"https://github.com/Chanchhay","gravatar_id":"","type":"User","site_admin":false,"url":"https://api.github.com/users/Chanchhay","events_url":"https://api.github.com/users/Chanchhay/events{/privacy}","following_url":"https://api.github.com/users/Chanchhay/following{/other_user}","followers_url":"https://api.github.com/users/Chanchhay/followers","gists_url":"https://api.github.com/users/Chanchhay/gists{/gist_id}","organizations_url":"https://api.github.com/users/Chanchhay/orgs","received_events_url":"https://api.github.com/users/Chanchhay/received_events","repos_url":"https://api.github.com/users/Chanchhay/repos","starred_url":"https://api.github.com/users/Chanchhay/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Chanchhay/subscriptions"},"comments":0,"created_at":"2026-01-01T09:56:42Z","updated_at":"2026-01-01T09:56:42Z","url":"https://api.github.com/repos/somatra-dev/library-management-system/issues/2","html_url":"https://github.com/somatra-dev/library-management-system/pull/2","comments_url":"https://api.github.com/repos/somatra-dev/library-management-system/issues/2/comments","events_url":"https://api.github.com/repos/somatra-dev/library-management-system/issues/2/events","labels_url":"https://api.github.com/repos/somatra-dev/library-management-system/issues/2/labels{/name}","repository_url":"https://api.github.com/repos/somatra-dev/library-management-system","pull_request":{"url":"https://api.github.com/repos/somatra-dev/library-management-system/pulls/2","html_url":"https://github.com/somatra-dev/library-management-system/pull/2","diff_url":"https://github.com/somatra-dev/library-management-system/pull/2.diff","patch_url":"https://github.com/somatra-dev/library-management-system/pull/2.patch"},"reactions":{"total_count":0,"+1":0,"-1":0,"laugh":0,"confused":0,"heart":0,"hooray":0,"rocket":0,"eyes":0,"url":"https://api.github.com/repos/somatra-dev/library-management-system/issues/2/reactions"},"node_id":"PR_kwDOQxbfZc67MCLW","draft":false},{"id":3951458820,"number":542,"state":"open","locked":false,"title":"Solution py py solid book service refactoring","author_association":"NONE","user":{"login":"SerhiiChumak","id":220217601,"node_id":"U_kgDODSBBAQ","avatar_url":"https://avatars.githubusercontent.com/u/220217601?v=4","html_url":"https://github.com/SerhiiChumak","gravatar_id":"","type":"User","site_admin":false,"url":"https://api.github.com/users/SerhiiChumak","events_url":"https://api.github.com/users/SerhiiChumak/events{/privacy}","following_url":"https://api.github.com/users/SerhiiChumak/following{/other_user}","followers_url":"https://api.github.com/users/SerhiiChumak/followers","gists_url":"https://api.github.com/users/SerhiiChumak/gists{/gist_id}","organizations_url":"https://api.github.com/users/SerhiiChumak/orgs","received_events_url":"https://api.github.com/users/SerhiiChumak/received_events","repos_url":"https://api.github.com/users/SerhiiChumak/repos","starred_url":"https://api.github.com/users/SerhiiChumak/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/SerhiiChumak/subscriptions"},"comments":0,"created_at":"2026-02-17T08:18:47Z","updated_at":"2026-02-17T09:00:39Z","url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/issues/542","html_url":"https://github.com/mate-academy/py-solid-book-service-refactoring/pull/542","comments_url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/issues/542/comments","events_url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/issues/542/events","labels_url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/issues/542/labels{/name}","repository_url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring","pull_request":{"url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/pulls/542","html_url":"https://github.com/mate-academy/py-solid-book-service-refactoring/pull/542","diff_url":"https://github.com/mate-academy/py-solid-book-service-refactoring/pull/542.diff","patch_url":"https://github.com/mate-academy/py-solid-book-service-refactoring/pull/542.patch"},"reactions":{"total_count":0,"+1":0,"-1":0,"laugh":0,"confused":0,"heart":0,"hooray":0,"rocket":0,"eyes":0,"url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/issues/542/reactions"},"node_id":"PR_kwDOKAAMns7ESnNM","draft":false},{"id":3102607265,"number":9,"state":"open","locked":false,"title":"Book service","author_association":"OWNER","user":{"login":"amarderschrecklicher","id":115952128,"node_id":"U_kgDOBulKAA","avatar_url":"https://avatars.githubusercontent.com/u/115952128?v=4","html_url":"https://github.com/amarderschrecklicher","gravatar_id":"","type":"User","site_admin":false,"url":"https://api.github.com/users/amarderschrecklicher","events_url":"https://api.github.com/users/amarderschrecklicher/events{/privacy}","following_url":"https://api.github.com/users/amarderschrecklicher/following{/other_user}","followers_url":"https://api.github.com/users/amarderschrecklicher/followers","gists_url":"https://api.github.com/users/amarderschrecklicher/gists{/gist_id}","organizations_url":"https://api.github.com/users/amarderschrecklicher/orgs","received_events_url":"https://api.github.com/users/amarderschrecklicher/received_events","repos_url":"https://api.github.com/users/amarderschrecklicher/repos","starred_url":"https://api.github.com/users/amarderschrecklicher/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/amarderschrecklicher/subscriptions"},"comments":0,"created_at":"2025-05-30T09:17:27Z","updated_at":"2025-06-20T13:08:22Z","url":"https://api.github.com/repos/amarderschrecklicher/Online-Library/issues/9","html_url":"https://github.com/amarderschrecklicher/Online-Library/pull/9","comments_url":"https://api.github.com/repos/amarderschrecklicher/Online-Library/issues/9/comments","events_url":"https://api.github.com/repos/amarderschrecklicher/Online-Library/issues/9/events","labels_url":"https://api.github.com/repos/amarderschrecklicher/Online-Library/issues/9/labels{/name}","repository_url":"https://api.github.com/repos/amarderschrecklicher/Online-Library","pull_request":{"url":"https://api.github.com/repos/amarderschrecklicher/Online-Library/pulls/9","html_url":"https://github.com/amarderschrecklicher/Online-Library/pull/9","diff_url":"https://github.com/amarderschrecklicher/Online-Library/pull/9.diff","patch_url":"https://github.com/amarderschrecklicher/Online-Library/pull/9.patch"},"reactions":{"total_count":0,"+1":0,"-1":0,"laugh":0,"confused":0,"heart":0,"hooray":0,"rocket":0,"eyes":0,"url":"https://api.github.com/repos/amarderschrecklicher/Online-Library/issues/9/reactions"},"node_id":"PR_kwDOOLqoc86YPgjy","draft":false},{"id":4275641152,"number":4956,"state":"open","locked":false,"title":"Add @maideo/mcp — book home cleaning services in France end-to-end","body":"This PR adds `@maideo/mcp`, an official MCP server for **Maideo**, a French home services provider (ménage à domicile, services à la personne, SAP-licensed since 2019).\n\n## What it does\n\nLets any MCP client (Claude Desktop, ChatGPT, Gemini, Cursor, Continue, Zed) book a professional home cleaner anywhere in **metropolitan France** end-to-end:\n\n| Tool | Purpose |\n|------|---------|\n| `search_coverage` | Check if Maideo serves a given 5-digit French zip code |\n| `get_quote` | Get a firm 72h-valid price quote |\n| `create_booking` | Create the booking in Maideo's back-office (returns 72h booking token) |\n| `enroll_avance_immediate` | Submit URSSAF enrollment (identity, address, IBAN) |\n| `get_booking_status` | Poll order, mission, worker assignment, URSSAF state |\n\n## Why it's notable\n\nFrance has a government-run \"avance immédiate de crédit d'impôt\" program where the URSSAF covers 50% of home services costs and handles SEPA direct debit for the rest. This MCP server is (to our knowledge) the first implementation of an agentic commerce flow that integrates with this mechanism — end users pay nothing upfront, just provide IBAN at enrollment, and the agent handles the entire booking flow.\n\nBookings are held for 48h before worker dispatch as anti-fraud protection. Agent calls require an `X-Agent-Name` header for rate limiting and abuse tracking.\n\n## Quick start\n\n```bash\nnpx @maideo/mcp\n```\n\nClaude Desktop config:\n\n\\`\\`\\`json\n{\n \"mcpServers\": {\n \"maideo\": {\n \"command\": \"npx\",\n \"args\": [\"-y\", \"@maideo/mcp\"],\n \"env\": { \"MAIDEO_AGENT_NAME\": \"claude-desktop\" }\n }\n }\n}\n\\`\\`\\`\n\n## Links\n\n- **npm**: https://www.npmjs.com/package/@maideo/mcp\n- **OpenAPI**: https://www.maideo.fr/openapi.json\n- **LLMs manifest**: https://www.maideo.fr/llms.txt\n- **Agent policy**: https://www.maideo.fr/agents.txt\n- **Maideo**: https://www.maideo.fr\n- **Contact**: dev@maideo.fr","author_association":"NONE","user":{"login":"frederic117","id":28898064,"node_id":"MDQ6VXNlcjI4ODk4MDY0","avatar_url":"https://avatars.githubusercontent.com/u/28898064?v=4","html_url":"https://github.com/frederic117","gravatar_id":"","type":"User","site_admin":false,"url":"https://api.github.com/users/frederic117","events_url":"https://api.github.com/users/frederic117/events{/privacy}","following_url":"https://api.github.com/users/frederic117/following{/other_user}","followers_url":"https://api.github.com/users/frederic117/followers","gists_url":"https://api.github.com/users/frederic117/gists{/gist_id}","organizations_url":"https://api.github.com/users/frederic117/orgs","received_events_url":"https://api.github.com/users/frederic117/received_events","repos_url":"https://api.github.com/users/frederic117/repos","starred_url":"https://api.github.com/users/frederic117/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/frederic117/subscriptions"},"labels":[{"id":10350553200,"url":"https://api.github.com/repos/punkpeye/awesome-mcp-servers/labels/valid-name","name":"valid-name","color":"40d01d","description":"","default":false,"node_id":"LA_kwDONWz9ps8AAAACaPDocA"},{"id":10350557950,"url":"https://api.github.com/repos/punkpeye/awesome-mcp-servers/labels/missing-emoji","name":"missing-emoji","color":"b32c26","description":"","default":false,"node_id":"LA_kwDONWz9ps8AAAACaPD6_g"},{"id":10350561209,"url":"https://api.github.com/repos/punkpeye/awesome-mcp-servers/labels/has-glama","name":"has-glama","color":"40d01d","description":"","default":false,"node_id":"LA_kwDONWz9ps8AAAACaPEHuQ"}],"comments":6,"created_at":"2026-04-16T12:16:25Z","updated_at":"2026-04-26T21:09:20Z","url":"https://api.github.com/repos/punkpeye/awesome-mcp-servers/issues/4956","html_url":"https://github.com/punkpeye/awesome-mcp-servers/pull/4956","comments_url":"https://api.github.com/repos/punkpeye/awesome-mcp-servers/issues/4956/comments","events_url":"https://api.github.com/repos/punkpeye/awesome-mcp-servers/issues/4956/events","labels_url":"https://api.github.com/repos/punkpeye/awesome-mcp-servers/issues/4956/labels{/name}","repository_url":"https://api.github.com/repos/punkpeye/awesome-mcp-servers","pull_request":{"url":"https://api.github.com/repos/punkpeye/awesome-mcp-servers/pulls/4956","html_url":"https://github.com/punkpeye/awesome-mcp-servers/pull/4956","diff_url":"https://github.com/punkpeye/awesome-mcp-servers/pull/4956.diff","patch_url":"https://github.com/punkpeye/awesome-mcp-servers/pull/4956.patch"},"reactions":{"total_count":0,"+1":0,"-1":0,"laugh":0,"confused":0,"heart":0,"hooray":0,"rocket":0,"eyes":0,"url":"https://api.github.com/repos/punkpeye/awesome-mcp-servers/issues/4956/reactions"},"node_id":"PR_kwDONWz9ps7S9cTY","draft":false},{"id":3478870572,"number":484,"state":"open","locked":false,"title":"Refactored book service","author_association":"NONE","user":{"login":"Kostenikov","id":30733614,"node_id":"MDQ6VXNlcjMwNzMzNjE0","avatar_url":"https://avatars.githubusercontent.com/u/30733614?v=4","html_url":"https://github.com/Kostenikov","gravatar_id":"","type":"User","site_admin":false,"url":"https://api.github.com/users/Kostenikov","events_url":"https://api.github.com/users/Kostenikov/events{/privacy}","following_url":"https://api.github.com/users/Kostenikov/following{/other_user}","followers_url":"https://api.github.com/users/Kostenikov/followers","gists_url":"https://api.github.com/users/Kostenikov/gists{/gist_id}","organizations_url":"https://api.github.com/users/Kostenikov/orgs","received_events_url":"https://api.github.com/users/Kostenikov/received_events","repos_url":"https://api.github.com/users/Kostenikov/repos","starred_url":"https://api.github.com/users/Kostenikov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Kostenikov/subscriptions"},"comments":0,"created_at":"2025-10-02T20:44:02Z","updated_at":"2025-10-02T21:01:47Z","url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/issues/484","html_url":"https://github.com/mate-academy/py-solid-book-service-refactoring/pull/484","comments_url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/issues/484/comments","events_url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/issues/484/events","labels_url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/issues/484/labels{/name}","repository_url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring","pull_request":{"url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/pulls/484","html_url":"https://github.com/mate-academy/py-solid-book-service-refactoring/pull/484","diff_url":"https://github.com/mate-academy/py-solid-book-service-refactoring/pull/484.diff","patch_url":"https://github.com/mate-academy/py-solid-book-service-refactoring/pull/484.patch"},"reactions":{"total_count":0,"+1":0,"-1":0,"laugh":0,"confused":0,"heart":0,"hooray":0,"rocket":0,"eyes":0,"url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/issues/484/reactions"},"node_id":"PR_kwDOKAAMns6r1u2U","draft":false},{"id":2754706826,"number":3,"state":"open","locked":false,"title":"Book Service","author_association":"OWNER","user":{"login":"qqdashkan","id":100764491,"node_id":"U_kgDOBgGLSw","avatar_url":"https://avatars.githubusercontent.com/u/100764491?v=4","html_url":"https://github.com/qqdashkan","gravatar_id":"","type":"User","site_admin":false,"url":"https://api.github.com/users/qqdashkan","events_url":"https://api.github.com/users/qqdashkan/events{/privacy}","following_url":"https://api.github.com/users/qqdashkan/following{/other_user}","followers_url":"https://api.github.com/users/qqdashkan/followers","gists_url":"https://api.github.com/users/qqdashkan/gists{/gist_id}","organizations_url":"https://api.github.com/users/qqdashkan/orgs","received_events_url":"https://api.github.com/users/qqdashkan/received_events","repos_url":"https://api.github.com/users/qqdashkan/repos","starred_url":"https://api.github.com/users/qqdashkan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/qqdashkan/subscriptions"},"assignee":{"login":"qqdashkan","id":100764491,"node_id":"U_kgDOBgGLSw","avatar_url":"https://avatars.githubusercontent.com/u/100764491?v=4","html_url":"https://github.com/qqdashkan","gravatar_id":"","type":"User","site_admin":false,"url":"https://api.github.com/users/qqdashkan","events_url":"https://api.github.com/users/qqdashkan/events{/privacy}","following_url":"https://api.github.com/users/qqdashkan/following{/other_user}","followers_url":"https://api.github.com/users/qqdashkan/followers","gists_url":"https://api.github.com/users/qqdashkan/gists{/gist_id}","organizations_url":"https://api.github.com/users/qqdashkan/orgs","received_events_url":"https://api.github.com/users/qqdashkan/received_events","repos_url":"https://api.github.com/users/qqdashkan/repos","starred_url":"https://api.github.com/users/qqdashkan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/qqdashkan/subscriptions"},"comments":0,"created_at":"2024-12-22T15:19:18Z","updated_at":"2024-12-22T15:31:03Z","url":"https://api.github.com/repos/qqdashkan/TS_homeworks/issues/3","html_url":"https://github.com/qqdashkan/TS_homeworks/pull/3","comments_url":"https://api.github.com/repos/qqdashkan/TS_homeworks/issues/3/comments","events_url":"https://api.github.com/repos/qqdashkan/TS_homeworks/issues/3/events","labels_url":"https://api.github.com/repos/qqdashkan/TS_homeworks/issues/3/labels{/name}","repository_url":"https://api.github.com/repos/qqdashkan/TS_homeworks","pull_request":{"url":"https://api.github.com/repos/qqdashkan/TS_homeworks/pulls/3","html_url":"https://github.com/qqdashkan/TS_homeworks/pull/3","diff_url":"https://github.com/qqdashkan/TS_homeworks/pull/3.diff","patch_url":"https://github.com/qqdashkan/TS_homeworks/pull/3.patch"},"reactions":{"total_count":0,"+1":0,"-1":0,"laugh":0,"confused":0,"heart":0,"hooray":0,"rocket":0,"eyes":0,"url":"https://api.github.com/repos/qqdashkan/TS_homeworks/issues/3/reactions"},"assignees":[{"login":"qqdashkan","id":100764491,"node_id":"U_kgDOBgGLSw","avatar_url":"https://avatars.githubusercontent.com/u/100764491?v=4","html_url":"https://github.com/qqdashkan","gravatar_id":"","type":"User","site_admin":false,"url":"https://api.github.com/users/qqdashkan","events_url":"https://api.github.com/users/qqdashkan/events{/privacy}","following_url":"https://api.github.com/users/qqdashkan/following{/other_user}","followers_url":"https://api.github.com/users/qqdashkan/followers","gists_url":"https://api.github.com/users/qqdashkan/gists{/gist_id}","organizations_url":"https://api.github.com/users/qqdashkan/orgs","received_events_url":"https://api.github.com/users/qqdashkan/received_events","repos_url":"https://api.github.com/users/qqdashkan/repos","starred_url":"https://api.github.com/users/qqdashkan/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/qqdashkan/subscriptions"}],"node_id":"PR_kwDONdiWAs6GBDuQ","draft":true},{"id":3827063928,"number":1,"state":"open","locked":false,"title":"Initialize Spring Boot Book CRUD service","body":"### Motivation\n\n- Replace repository contents with a fresh Java Spring Boot project that implements a professional CRUD API for a `Book` entity with fields `name`, `author`, and `writedTime`.\n- Provide sensible defaults for development including an in-memory H2 datasource, validation, and centralized REST error handling.\n\n### Description\n\n- Add Maven Spring Boot project (`pom.xml`) using Spring Boot `3.3.2` with `spring-boot-starter-web`, `spring-boot-starter-data-jpa`, `spring-boot-starter-validation`, and `h2` runtime dependency.\n- Add application config (`src/main/resources/application.yml`) to configure H2 in-memory DB, JPA `ddl-auto`, and server port `8080`.\n- Implement `Book` JPA entity (`src/main/java/com/example/bookstore/entity/Book.java`) with `id`, `name`, `author`, and `writedTime` fields.\n- Add DTOs `BookRequest` and `BookResponse` (`src/main/java/com/example/bookstore/web/dto/*`) and apply validation annotations (`@NotBlank`, `@NotNull`) on `BookRequest`.\n- Provide repository interface `BookRepository` (`src/main/java/com/example/bookstore/repository/BookRepository.java`) and service layer (`BookService` + `BookServiceImpl`) with transactional CRUD operations and conversion to `BookResponse`.\n- Add REST controller `BookController` (`src/main/java/com/example/bookstore/controller/BookController.java`) exposing endpoints under `/api/books` for create, read, list, update, and delete.\n- Add centralized exception handling `RestExceptionHandler` and custom `BookNotFoundException` for consistent error responses.\n- Add project scaffolding: `BookstoreApplication` main class, `.gitignore`, and `README.md` documenting run instructions and sample `curl` requests.\n\n### Testing\n\n- No automated tests were executed as part of this change; `mvn test` was not run.\n\n------\n[Codex Task](https://chatgpt.com/codex/tasks/task_b_696d1a6cfe048328aa05f2ed67ec739c)","author_association":"OWNER","user":{"login":"JamalJavadov","id":186066980,"node_id":"U_kgDOCxcoJA","avatar_url":"https://avatars.githubusercontent.com/u/186066980?v=4","html_url":"https://github.com/JamalJavadov","gravatar_id":"","type":"User","site_admin":false,"url":"https://api.github.com/users/JamalJavadov","events_url":"https://api.github.com/users/JamalJavadov/events{/privacy}","following_url":"https://api.github.com/users/JamalJavadov/following{/other_user}","followers_url":"https://api.github.com/users/JamalJavadov/followers","gists_url":"https://api.github.com/users/JamalJavadov/gists{/gist_id}","organizations_url":"https://api.github.com/users/JamalJavadov/orgs","received_events_url":"https://api.github.com/users/JamalJavadov/received_events","repos_url":"https://api.github.com/users/JamalJavadov/repos","starred_url":"https://api.github.com/users/JamalJavadov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JamalJavadov/subscriptions"},"labels":[{"id":10017357021,"url":"https://api.github.com/repos/JamalJavadov/project-godlevel/labels/codex","name":"codex","color":"ededed","default":false,"node_id":"LA_kwDOQ8TRZ88AAAACVRS83Q"}],"comments":0,"created_at":"2026-01-18T17:42:10Z","updated_at":"2026-01-18T17:42:11Z","url":"https://api.github.com/repos/JamalJavadov/project-godlevel/issues/1","html_url":"https://github.com/JamalJavadov/project-godlevel/pull/1","comments_url":"https://api.github.com/repos/JamalJavadov/project-godlevel/issues/1/comments","events_url":"https://api.github.com/repos/JamalJavadov/project-godlevel/issues/1/events","labels_url":"https://api.github.com/repos/JamalJavadov/project-godlevel/issues/1/labels{/name}","repository_url":"https://api.github.com/repos/JamalJavadov/project-godlevel","pull_request":{"url":"https://api.github.com/repos/JamalJavadov/project-godlevel/pulls/1","html_url":"https://github.com/JamalJavadov/project-godlevel/pull/1","diff_url":"https://github.com/JamalJavadov/project-godlevel/pull/1.diff","patch_url":"https://github.com/JamalJavadov/project-godlevel/pull/1.patch"},"reactions":{"total_count":1,"+1":1,"-1":0,"laugh":0,"confused":0,"heart":0,"hooray":0,"rocket":0,"eyes":0,"url":"https://api.github.com/repos/JamalJavadov/project-godlevel/issues/1/reactions"},"node_id":"PR_kwDOQ8TRZ86935-e","draft":false},{"id":1011771054,"number":1,"state":"open","locked":false,"title":"book-service","author_association":"OWNER","user":{"login":"HarishKumar56","id":67096663,"node_id":"MDQ6VXNlcjY3MDk2NjYz","avatar_url":"https://avatars.githubusercontent.com/u/67096663?v=4","html_url":"https://github.com/HarishKumar56","gravatar_id":"","type":"User","site_admin":false,"url":"https://api.github.com/users/HarishKumar56","events_url":"https://api.github.com/users/HarishKumar56/events{/privacy}","following_url":"https://api.github.com/users/HarishKumar56/following{/other_user}","followers_url":"https://api.github.com/users/HarishKumar56/followers","gists_url":"https://api.github.com/users/HarishKumar56/gists{/gist_id}","organizations_url":"https://api.github.com/users/HarishKumar56/orgs","received_events_url":"https://api.github.com/users/HarishKumar56/received_events","repos_url":"https://api.github.com/users/HarishKumar56/repos","starred_url":"https://api.github.com/users/HarishKumar56/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/HarishKumar56/subscriptions"},"comments":0,"created_at":"2021-09-30T06:31:13Z","updated_at":"2021-10-07T09:03:39Z","url":"https://api.github.com/repos/HarishKumar56/book-service/issues/1","html_url":"https://github.com/HarishKumar56/book-service/pull/1","comments_url":"https://api.github.com/repos/HarishKumar56/book-service/issues/1/comments","events_url":"https://api.github.com/repos/HarishKumar56/book-service/issues/1/events","labels_url":"https://api.github.com/repos/HarishKumar56/book-service/issues/1/labels{/name}","repository_url":"https://api.github.com/repos/HarishKumar56/book-service","pull_request":{"url":"https://api.github.com/repos/HarishKumar56/book-service/pulls/1","html_url":"https://github.com/HarishKumar56/book-service/pull/1","diff_url":"https://github.com/HarishKumar56/book-service/pull/1.diff","patch_url":"https://github.com/HarishKumar56/book-service/pull/1.patch"},"reactions":{"total_count":0,"+1":0,"-1":0,"laugh":0,"confused":0,"heart":0,"hooray":0,"rocket":0,"eyes":0,"url":"https://api.github.com/repos/HarishKumar56/book-service/issues/1/reactions"},"node_id":"PR_kwDOGI3Wc84sfNfA","draft":false},{"id":4044468252,"number":1,"state":"open","locked":false,"title":"Add book management API with service layer and comprehensive tests","body":"## Summary\nThis PR implements a complete book management REST API with a service layer architecture, database integration, and comprehensive test coverage. The application follows clean architecture principles with clear separation of concerns across configuration, models, schemas, services, and routers.\n\n## Key Changes\n\n### Core Application Structure\n- **Main application setup** (`src/main.py`): FastAPI application with lifespan management, database initialization, and router integration\n- **Database configuration** (`src/configurations/database.py`): Async SQLAlchemy engine setup with session management and database initialization\n- **Settings management** (`src/configurations/settings.py`): Environment-based configuration using Pydantic Settings for database credentials\n\n### Data Layer\n- **Book model** (`src/models/books.py`): SQLAlchemy ORM model with fields for title, author, year, and pages\n- **Base model** (`src/models/base.py`): Declarative base with automatic timestamp tracking (created_at, updated_at)\n\n### API Layer\n- **Book schemas** (`src/schemas/books.py`): Pydantic models for request/response validation including:\n - `IncomingBook`: Validates incoming data with year validation (≥2020) and field aliasing\n - `ReturnedBook`: Response model with all fields including ID\n - `PatchBook`: Partial update support with optional fields\n - `ReturnedAllBooks`: Wrapper for list responses\n\n- **Book router** (`src/routers/v1/books.py`): RESTful endpoints implementing CRUD operations:\n - GET `/books/` - List all books\n - POST `/books/` - Create new book (201 status)\n - GET `/books/{id}` - Retrieve single book\n - PUT `/books/{id}` - Full update\n - PATCH `/books/{id}` - Partial update\n - DELETE `/books/{id}` - Delete book (204 status)\n\n### Business Logic\n- **Book service** (`src/services/books.py`): Service layer handling all book operations with database interactions\n\n### Testing Infrastructure\n- **Test configuration** (`src/tests/conftest.py`): Comprehensive pytest fixtures including:\n - Async event loop management\n - Test database engine and session factory\n - Automatic table creation/cleanup\n - Dependency injection override for testing\n - Async HTTP client for endpoint testing\n\n- **Book tests** (`src/tests/test_books.py`): 10 test cases covering:\n - Book creation with validation\n - List retrieval\n - Single book retrieval with 404 handling\n - Full and partial updates\n - Deletion with 404 handling\n - Year validation (rejecting dates before 2020)\n\n### Infrastructure \u0026 Configuration\n- **Docker setup** (`docker-compose.yml`, `docker/postgres/Dockerfile`): PostgreSQL 14 container with automatic database creation\n- **Environment configuration** (`.env_example`): Template for required environment variables\n- **Dependencies** (`requirements.txt`): FastAPI, SQLAlchemy, pytest-asyncio, and supporting libraries\n- **IDE configuration** (`.vscode/launch.json`, `.vscode/settings.json`): Debug configurations for FastAPI and pytest\n- **Git configuration** (`.gitignore`): Comprehensive ignore rules for Python, PyCharm, VSCode, and venv\n\n### Documentation\n- **API testing** (`api_tests.http`): REST Client examples for all endpoints\n- **README** (`README.md`): Project overview, structure explanation, and useful references\n\n## Notable Implementation Details\n- Uses async/await throughout for non-blocking database operations\n- Implements proper HTTP status codes (201 for creation, 204 for deletion, 404 for not found)\n- Field aliasing in schemas (`count_pages` → `pages`) for flexible API contracts\n- Walrus operator usage in service layer for concise conditional assignments\n- Test isolation with separate test database and automatic rollback\n- Dependency injection pattern for database session management\n\nhttps://claude.ai/code/session_012VqJw4Xksyvc66WccG15sD","author_association":"OWNER","user":{"login":"AlexZavrin","id":132642346,"node_id":"U_kgDOB-f2Kg","avatar_url":"https://avatars.githubusercontent.com/u/132642346?v=4","html_url":"https://github.com/AlexZavrin","gravatar_id":"","type":"User","site_admin":false,"url":"https://api.github.com/users/AlexZavrin","events_url":"https://api.github.com/users/AlexZavrin/events{/privacy}","following_url":"https://api.github.com/users/AlexZavrin/following{/other_user}","followers_url":"https://api.github.com/users/AlexZavrin/followers","gists_url":"https://api.github.com/users/AlexZavrin/gists{/gist_id}","organizations_url":"https://api.github.com/users/AlexZavrin/orgs","received_events_url":"https://api.github.com/users/AlexZavrin/received_events","repos_url":"https://api.github.com/users/AlexZavrin/repos","starred_url":"https://api.github.com/users/AlexZavrin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/AlexZavrin/subscriptions"},"comments":0,"created_at":"2026-03-09T09:34:20Z","updated_at":"2026-03-24T17:45:18Z","url":"https://api.github.com/repos/AlexZavrin/MSHP/issues/1","html_url":"https://github.com/AlexZavrin/MSHP/pull/1","comments_url":"https://api.github.com/repos/AlexZavrin/MSHP/issues/1/comments","events_url":"https://api.github.com/repos/AlexZavrin/MSHP/issues/1/events","labels_url":"https://api.github.com/repos/AlexZavrin/MSHP/issues/1/labels{/name}","repository_url":"https://api.github.com/repos/AlexZavrin/MSHP","pull_request":{"url":"https://api.github.com/repos/AlexZavrin/MSHP/pulls/1","html_url":"https://github.com/AlexZavrin/MSHP/pull/1","diff_url":"https://github.com/AlexZavrin/MSHP/pull/1.diff","patch_url":"https://github.com/AlexZavrin/MSHP/pull/1.patch"},"reactions":{"total_count":0,"+1":0,"-1":0,"laugh":0,"confused":0,"heart":0,"hooray":0,"rocket":0,"eyes":0,"url":"https://api.github.com/repos/AlexZavrin/MSHP/issues/1/reactions"},"node_id":"PR_kwDORhueR87JA92w","draft":false},{"id":3240088011,"number":7,"state":"open","locked":false,"title":"book service test","author_association":"CONTRIBUTOR","user":{"login":"yagami691","id":161654801,"node_id":"U_kgDOCaKoEQ","avatar_url":"https://avatars.githubusercontent.com/u/161654801?v=4","html_url":"https://github.com/yagami691","gravatar_id":"","type":"User","site_admin":false,"url":"https://api.github.com/users/yagami691","events_url":"https://api.github.com/users/yagami691/events{/privacy}","following_url":"https://api.github.com/users/yagami691/following{/other_user}","followers_url":"https://api.github.com/users/yagami691/followers","gists_url":"https://api.github.com/users/yagami691/gists{/gist_id}","organizations_url":"https://api.github.com/users/yagami691/orgs","received_events_url":"https://api.github.com/users/yagami691/received_events","repos_url":"https://api.github.com/users/yagami691/repos","starred_url":"https://api.github.com/users/yagami691/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/yagami691/subscriptions"},"comments":0,"created_at":"2025-07-17T15:54:46Z","updated_at":"2025-07-17T15:54:46Z","url":"https://api.github.com/repos/digital-Library-Management-System/bookService/issues/7","html_url":"https://github.com/digital-Library-Management-System/bookService/pull/7","comments_url":"https://api.github.com/repos/digital-Library-Management-System/bookService/issues/7/comments","events_url":"https://api.github.com/repos/digital-Library-Management-System/bookService/issues/7/events","labels_url":"https://api.github.com/repos/digital-Library-Management-System/bookService/issues/7/labels{/name}","repository_url":"https://api.github.com/repos/digital-Library-Management-System/bookService","pull_request":{"url":"https://api.github.com/repos/digital-Library-Management-System/bookService/pulls/7","html_url":"https://github.com/digital-Library-Management-System/bookService/pull/7","diff_url":"https://github.com/digital-Library-Management-System/bookService/pull/7.diff","patch_url":"https://github.com/digital-Library-Management-System/bookService/pull/7.patch"},"reactions":{"total_count":0,"+1":0,"-1":0,"laugh":0,"confused":0,"heart":0,"hooray":0,"rocket":0,"eyes":0,"url":"https://api.github.com/repos/digital-Library-Management-System/bookService/issues/7/reactions"},"node_id":"PR_kwDOO8rs3c6faGTW","draft":false},{"id":4181496435,"number":15,"state":"open","locked":false,"title":"Add test cases for Book and Category entities: repository, service, c…","body":"…ontroller.\r\n\u003cimg width=\"1920\" height=\"1080\" alt=\"Screenshot 2026-03-31 195745\" src=\"https://github.com/user-attachments/assets/c55a0a7a-9d2d-4b55-b4cc-bae136bed6e1\" /\u003e\r\n","author_association":"OWNER","user":{"login":"Tetiana-Hrytsenko","id":169438511,"node_id":"U_kgDOChltLw","avatar_url":"https://avatars.githubusercontent.com/u/169438511?v=4","html_url":"https://github.com/Tetiana-Hrytsenko","gravatar_id":"","type":"User","site_admin":false,"url":"https://api.github.com/users/Tetiana-Hrytsenko","events_url":"https://api.github.com/users/Tetiana-Hrytsenko/events{/privacy}","following_url":"https://api.github.com/users/Tetiana-Hrytsenko/following{/other_user}","followers_url":"https://api.github.com/users/Tetiana-Hrytsenko/followers","gists_url":"https://api.github.com/users/Tetiana-Hrytsenko/gists{/gist_id}","organizations_url":"https://api.github.com/users/Tetiana-Hrytsenko/orgs","received_events_url":"https://api.github.com/users/Tetiana-Hrytsenko/received_events","repos_url":"https://api.github.com/users/Tetiana-Hrytsenko/repos","starred_url":"https://api.github.com/users/Tetiana-Hrytsenko/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Tetiana-Hrytsenko/subscriptions"},"comments":0,"created_at":"2026-03-31T18:44:33Z","updated_at":"2026-04-02T07:26:33Z","url":"https://api.github.com/repos/Tetiana-Hrytsenko/online-book-store/issues/15","html_url":"https://github.com/Tetiana-Hrytsenko/online-book-store/pull/15","comments_url":"https://api.github.com/repos/Tetiana-Hrytsenko/online-book-store/issues/15/comments","events_url":"https://api.github.com/repos/Tetiana-Hrytsenko/online-book-store/issues/15/events","labels_url":"https://api.github.com/repos/Tetiana-Hrytsenko/online-book-store/issues/15/labels{/name}","repository_url":"https://api.github.com/repos/Tetiana-Hrytsenko/online-book-store","pull_request":{"url":"https://api.github.com/repos/Tetiana-Hrytsenko/online-book-store/pulls/15","html_url":"https://github.com/Tetiana-Hrytsenko/online-book-store/pull/15","diff_url":"https://github.com/Tetiana-Hrytsenko/online-book-store/pull/15.diff","patch_url":"https://github.com/Tetiana-Hrytsenko/online-book-store/pull/15.patch"},"reactions":{"total_count":0,"+1":0,"-1":0,"laugh":0,"confused":0,"heart":0,"hooray":0,"rocket":0,"eyes":0,"url":"https://api.github.com/repos/Tetiana-Hrytsenko/online-book-store/issues/15/reactions"},"node_id":"PR_kwDOQdWe987PCP-I","draft":false},{"id":3853503331,"number":516,"state":"open","locked":false,"title":"refactor: apply SOLID principles to Book service","body":"- Split Book class into separate responsibilities\r\n- Implement Strategy pattern for display, print, and serialization\r\n- Organize code into modular structure (service/display, printer, serializer)\r\n- Fix flake8 N813 violation (ET → ElementTree)","author_association":"NONE","user":{"login":"dmytro-malyk-dm","id":235730624,"node_id":"U_kgDODgz2wA","avatar_url":"https://avatars.githubusercontent.com/u/235730624?v=4","html_url":"https://github.com/dmytro-malyk-dm","gravatar_id":"","type":"User","site_admin":false,"url":"https://api.github.com/users/dmytro-malyk-dm","events_url":"https://api.github.com/users/dmytro-malyk-dm/events{/privacy}","following_url":"https://api.github.com/users/dmytro-malyk-dm/following{/other_user}","followers_url":"https://api.github.com/users/dmytro-malyk-dm/followers","gists_url":"https://api.github.com/users/dmytro-malyk-dm/gists{/gist_id}","organizations_url":"https://api.github.com/users/dmytro-malyk-dm/orgs","received_events_url":"https://api.github.com/users/dmytro-malyk-dm/received_events","repos_url":"https://api.github.com/users/dmytro-malyk-dm/repos","starred_url":"https://api.github.com/users/dmytro-malyk-dm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dmytro-malyk-dm/subscriptions"},"comments":0,"created_at":"2026-01-25T16:29:35Z","updated_at":"2026-01-25T16:31:03Z","url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/issues/516","html_url":"https://github.com/mate-academy/py-solid-book-service-refactoring/pull/516","comments_url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/issues/516/comments","events_url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/issues/516/events","labels_url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/issues/516/labels{/name}","repository_url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring","pull_request":{"url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/pulls/516","html_url":"https://github.com/mate-academy/py-solid-book-service-refactoring/pull/516","diff_url":"https://github.com/mate-academy/py-solid-book-service-refactoring/pull/516.diff","patch_url":"https://github.com/mate-academy/py-solid-book-service-refactoring/pull/516.patch"},"reactions":{"total_count":0,"+1":0,"-1":0,"laugh":0,"confused":0,"heart":0,"hooray":0,"rocket":0,"eyes":0,"url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/issues/516/reactions"},"node_id":"PR_kwDOKAAMns6_Polp","draft":false},{"id":3117678974,"number":1,"state":"open","locked":false,"title":"book-web service","author_association":"OWNER","user":{"login":"FireFalcons","id":111230201,"node_id":"U_kgDOBqE8-Q","avatar_url":"https://avatars.githubusercontent.com/u/111230201?v=4","html_url":"https://github.com/FireFalcons","gravatar_id":"","type":"User","site_admin":false,"url":"https://api.github.com/users/FireFalcons","events_url":"https://api.github.com/users/FireFalcons/events{/privacy}","following_url":"https://api.github.com/users/FireFalcons/following{/other_user}","followers_url":"https://api.github.com/users/FireFalcons/followers","gists_url":"https://api.github.com/users/FireFalcons/gists{/gist_id}","organizations_url":"https://api.github.com/users/FireFalcons/orgs","received_events_url":"https://api.github.com/users/FireFalcons/received_events","repos_url":"https://api.github.com/users/FireFalcons/repos","starred_url":"https://api.github.com/users/FireFalcons/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/FireFalcons/subscriptions"},"comments":0,"created_at":"2025-06-04T12:34:27Z","updated_at":"2025-06-07T09:19:33Z","url":"https://api.github.com/repos/FireFalcons/Spring-Boot-Web/issues/1","html_url":"https://github.com/FireFalcons/Spring-Boot-Web/pull/1","comments_url":"https://api.github.com/repos/FireFalcons/Spring-Boot-Web/issues/1/comments","events_url":"https://api.github.com/repos/FireFalcons/Spring-Boot-Web/issues/1/events","labels_url":"https://api.github.com/repos/FireFalcons/Spring-Boot-Web/issues/1/labels{/name}","repository_url":"https://api.github.com/repos/FireFalcons/Spring-Boot-Web","pull_request":{"url":"https://api.github.com/repos/FireFalcons/Spring-Boot-Web/pulls/1","html_url":"https://github.com/FireFalcons/Spring-Boot-Web/pull/1","diff_url":"https://github.com/FireFalcons/Spring-Boot-Web/pull/1.diff","patch_url":"https://github.com/FireFalcons/Spring-Boot-Web/pull/1.patch"},"reactions":{"total_count":0,"+1":0,"-1":0,"laugh":0,"confused":0,"heart":0,"hooray":0,"rocket":0,"eyes":0,"url":"https://api.github.com/repos/FireFalcons/Spring-Boot-Web/issues/1/reactions"},"node_id":"PR_kwDOO0lvic6ZBDoz","draft":false},{"id":3477500433,"number":477,"state":"open","locked":false,"title":"solid correct service book","author_association":"NONE","user":{"login":"Salmon-eat","id":192525217,"node_id":"U_kgDOC3mzoQ","avatar_url":"https://avatars.githubusercontent.com/u/192525217?v=4","html_url":"https://github.com/Salmon-eat","gravatar_id":"","type":"User","site_admin":false,"url":"https://api.github.com/users/Salmon-eat","events_url":"https://api.github.com/users/Salmon-eat/events{/privacy}","following_url":"https://api.github.com/users/Salmon-eat/following{/other_user}","followers_url":"https://api.github.com/users/Salmon-eat/followers","gists_url":"https://api.github.com/users/Salmon-eat/gists{/gist_id}","organizations_url":"https://api.github.com/users/Salmon-eat/orgs","received_events_url":"https://api.github.com/users/Salmon-eat/received_events","repos_url":"https://api.github.com/users/Salmon-eat/repos","starred_url":"https://api.github.com/users/Salmon-eat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Salmon-eat/subscriptions"},"comments":0,"created_at":"2025-10-02T13:18:21Z","updated_at":"2025-10-02T13:55:59Z","url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/issues/477","html_url":"https://github.com/mate-academy/py-solid-book-service-refactoring/pull/477","comments_url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/issues/477/comments","events_url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/issues/477/events","labels_url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/issues/477/labels{/name}","repository_url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring","pull_request":{"url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/pulls/477","html_url":"https://github.com/mate-academy/py-solid-book-service-refactoring/pull/477","diff_url":"https://github.com/mate-academy/py-solid-book-service-refactoring/pull/477.diff","patch_url":"https://github.com/mate-academy/py-solid-book-service-refactoring/pull/477.patch"},"reactions":{"total_count":0,"+1":0,"-1":0,"laugh":0,"confused":0,"heart":0,"hooray":0,"rocket":0,"eyes":0,"url":"https://api.github.com/repos/mate-academy/py-solid-book-service-refactoring/issues/477/reactions"},"node_id":"PR_kwDOKAAMns6rxFV0","draft":false}]}