import type { Document, IndexDescription } from "mongodb"; import { MUNI_ISSUE_SYNC_STATUSES, MUNI_ISSUE_TEXT_MAX_LENGTH, MUNI_ISSUE_NAME_MAX_LENGTH, } from "./muniIssues.constants"; export const muniIssuesJsonSchema: Document = { bsonType: "object", required: [ "callSid", "clientId", "cityName", "issueContent", "jira", "createdAt", ], properties: { callSid: { bsonType: "string" }, clientId: { bsonType: "string" }, cityName: { bsonType: "string" }, issueContent: { bsonType: "object", required: [ "issuerName", "issuerRole", "issueDescription", "desiredBehavior", ], properties: { issuerName: { bsonType: "string", maxLength: MUNI_ISSUE_NAME_MAX_LENGTH, }, issuerRole: { bsonType: "string", maxLength: MUNI_ISSUE_NAME_MAX_LENGTH, }, issueDescription: { bsonType: "string", maxLength: MUNI_ISSUE_TEXT_MAX_LENGTH, }, desiredBehavior: { bsonType: "string", maxLength: MUNI_ISSUE_TEXT_MAX_LENGTH, }, }, }, jira: { bsonType: "object", required: ["key", "syncStatus"], properties: { key: { bsonType: "string" }, syncStatus: { enum: [...MUNI_ISSUE_SYNC_STATUSES] }, }, }, createdAt: { bsonType: "date" }, }, }; export const muniIssuesIndexes: IndexDescription[] = [ { key: { callSid: 1 }, name: "callSid_1" }, { key: { createdAt: -1 }, name: "createdAt_-1" }, // Unique: one stored document per Jira ticket, guarding against duplicate writes. { key: { "jira.key": 1 }, name: "jira_key_unique", unique: true }, ];