diff options
Diffstat (limited to 'src/server/routes/sync.ts')
| -rw-r--r-- | src/server/routes/sync.ts | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/server/routes/sync.ts b/src/server/routes/sync.ts index 01f9bd0..d61e8d3 100644 --- a/src/server/routes/sync.ts +++ b/src/server/routes/sync.ts @@ -3,6 +3,7 @@ import { Hono } from "hono"; import { z } from "zod"; import { authMiddleware, getAuthUser } from "../middleware/index.js"; import { + type SyncPullQuery, type SyncPushData, type SyncRepository, syncRepository, @@ -58,6 +59,10 @@ const syncPushSchema = z.object({ reviewLogs: z.array(syncReviewLogSchema).default([]), }); +const syncPullQuerySchema = z.object({ + lastSyncVersion: z.coerce.number().int().min(0).default(0), +}); + export function createSyncRouter(deps: SyncDependencies) { const { syncRepo } = deps; @@ -70,6 +75,14 @@ export function createSyncRouter(deps: SyncDependencies) { const result = await syncRepo.pushChanges(user.id, data); return c.json(result, 200); + }) + .get("/pull", zValidator("query", syncPullQuerySchema), async (c) => { + const user = getAuthUser(c); + const query = c.req.valid("query") as SyncPullQuery; + + const result = await syncRepo.pullChanges(user.id, query); + + return c.json(result, 200); }); } |
