( data: D, definition: EntityDefinition<D, any> )
| 40 | } |
| 41 | |
| 42 | function assertDataMatchDefinition<D>( |
| 43 | data: D, |
| 44 | definition: EntityDefinition<D, any> |
| 45 | ) { |
| 46 | const rawDataKeys = new Set(typedKeys(data)); |
| 47 | |
| 48 | for (const requiredKey of definition.config.fields) { |
| 49 | assert( |
| 50 | rawDataKeys.has(requiredKey), |
| 51 | `Required field "${ |
| 52 | requiredKey as string |
| 53 | }" is missing when creating new entity ${definition.config.name}` |
| 54 | ); |
| 55 | |
| 56 | rawDataKeys.delete(requiredKey); |
| 57 | } |
| 58 | |
| 59 | if (rawDataKeys.size > 0) { |
| 60 | const missingFields = Array.from(rawDataKeys).join(", "); |
| 61 | throw new Error( |
| 62 | `Unknown fields "${missingFields}" found when creating new entity "${definition.config.name}"` |
| 63 | ); |
| 64 | } |
| 65 | } |
| 66 | |
| 67 | function fillDataDefaults<D>(data: Partial<D>, store: EntityStore<D, any>): D { |
| 68 | const { definition, db } = store; |
no test coverage detected