- Add sortOrder REAL column to threadCandidates schema (default 0) - Add sort_order column to test helper CREATE TABLE - Add reorderCandidatesSchema to shared/schemas.ts - Add ReorderCandidates type to shared/types.ts - getThreadWithCandidates now orders candidates by sort_order ASC - createCandidate appends at max sort_order + 1000 (first = 1000) - Add reorderCandidates service function (transaction, active-only guard) - Add 5 new tests: ordering, appending, reorder success, resolved guard, missing thread
52 lines
1.8 KiB
TypeScript
52 lines
1.8 KiB
TypeScript
import type { z } from "zod";
|
|
import type {
|
|
categories,
|
|
items,
|
|
setupItems,
|
|
setups,
|
|
threadCandidates,
|
|
threads,
|
|
} from "../db/schema.ts";
|
|
import type {
|
|
createCandidateSchema,
|
|
createCategorySchema,
|
|
createItemSchema,
|
|
createSetupSchema,
|
|
createThreadSchema,
|
|
reorderCandidatesSchema,
|
|
resolveThreadSchema,
|
|
syncSetupItemsSchema,
|
|
updateCandidateSchema,
|
|
updateCategorySchema,
|
|
updateClassificationSchema,
|
|
updateItemSchema,
|
|
updateSetupSchema,
|
|
updateThreadSchema,
|
|
} from "./schemas.ts";
|
|
|
|
// Types inferred from Zod schemas
|
|
export type CreateItem = z.infer<typeof createItemSchema>;
|
|
export type UpdateItem = z.infer<typeof updateItemSchema>;
|
|
export type CreateCategory = z.infer<typeof createCategorySchema>;
|
|
export type UpdateCategory = z.infer<typeof updateCategorySchema>;
|
|
export type CreateThread = z.infer<typeof createThreadSchema>;
|
|
export type UpdateThread = z.infer<typeof updateThreadSchema>;
|
|
export type CreateCandidate = z.infer<typeof createCandidateSchema>;
|
|
export type UpdateCandidate = z.infer<typeof updateCandidateSchema>;
|
|
export type ResolveThread = z.infer<typeof resolveThreadSchema>;
|
|
export type ReorderCandidates = z.infer<typeof reorderCandidatesSchema>;
|
|
|
|
// Setup types
|
|
export type CreateSetup = z.infer<typeof createSetupSchema>;
|
|
export type UpdateSetup = z.infer<typeof updateSetupSchema>;
|
|
export type SyncSetupItems = z.infer<typeof syncSetupItemsSchema>;
|
|
export type UpdateClassification = z.infer<typeof updateClassificationSchema>;
|
|
|
|
// Types inferred from Drizzle schema
|
|
export type Item = typeof items.$inferSelect;
|
|
export type Category = typeof categories.$inferSelect;
|
|
export type Thread = typeof threads.$inferSelect;
|
|
export type ThreadCandidate = typeof threadCandidates.$inferSelect;
|
|
export type Setup = typeof setups.$inferSelect;
|
|
export type SetupItem = typeof setupItems.$inferSelect;
|