feat: share Forgejo and Gitea provider core#268
Conversation
|
This change is part of the following stack:
Change managed by git-spice. |
roborev: Combined Review (
|
f1afe5a to
afbb625
Compare
84ab5d3 to
35d7f58
Compare
roborev: Combined Review (
|
roborev: Combined Review (
|
afbb625 to
a2d4236
Compare
ed1755a to
c4e4cda
Compare
roborev: Combined Review (
|
a2d4236 to
36dc8ee
Compare
c4e4cda to
4e8dddc
Compare
roborev: Combined Review (
|
4e8dddc to
9bda02e
Compare
roborev: Combined Review (
|
roborev: Combined Review (
|
6a59cce to
60e788d
Compare
7508c2e to
d48e9c1
Compare
roborev: Combined Review (
|
d48e9c1 to
7a30080
Compare
roborev: Combined Review (
|
Adds a shared gitea-like provider core for SDK-free normalization, pagination, read capabilities, and typed transport error mapping before SDK converters wire into it.
Add an explicit draft field to the shared gitealike pull request DTO and normalize draft state from that field instead of deriving it from the locked flag.
Carry provider lock state through normalized merge requests, SQLite storage, and generated API models. Add a frontend supportsLocked helper for providers that expose lock state.
Replace direct Options struct literals at the shared provider constructor with functional options so callers opt into provider behavior through named With helpers. This keeps provider construction extensible as Forgejo and Gitea capabilities diverge.
Locked state now travels through gitealike normalization and persistence. Add an API-backed sync test that proves a locked non-draft Forgejo pull request is persisted in SQLite and returned through the generated HTTP client as locked without being treated as draft.
Forgejo and Gitea compatible servers provide pagination cursors. Reject repeated, backwards, or excessively long pagination so a bad provider response cannot keep a sync worker collecting pages indefinitely.
7a30080 to
c6466bd
Compare
roborev: Combined Review (
|
Adds a shared gitea-like provider core for SDK-free normalization, pagination, read capabilities, and typed transport error mapping before SDK converters wire into it.