(schema: SchemaDef, model: string)
| 214 | } |
| 215 | |
| 216 | export function getUniqueFields(schema: SchemaDef, model: string) { |
| 217 | const modelDef = requireModel(schema, model); |
| 218 | const result: Array< |
| 219 | // single field unique |
| 220 | | { name: string; def: FieldDef } |
| 221 | // multi-field unique |
| 222 | | { name: string; defs: Record<string, FieldDef> } |
| 223 | > = []; |
| 224 | for (const [key, value] of Object.entries(modelDef.uniqueFields)) { |
| 225 | if (typeof value !== 'object') { |
| 226 | throw createInternalError(`Invalid unique field definition for "${key}"`, model); |
| 227 | } |
| 228 | |
| 229 | if (typeof value.type === 'string') { |
| 230 | // singular unique field |
| 231 | result.push({ name: key, def: requireField(schema, model, key) }); |
| 232 | } else { |
| 233 | // compound unique field |
| 234 | result.push({ |
| 235 | name: key, |
| 236 | defs: Object.fromEntries(Object.keys(value).map((k) => [k, requireField(schema, model, k)])), |
| 237 | }); |
| 238 | } |
| 239 | } |
| 240 | return result; |
| 241 | } |
| 242 | |
| 243 | export function getIdValues(schema: SchemaDef, model: string, data: any): Record<string, any> { |
| 244 | const idFields = getIdFields(schema, model); |
no test coverage detected