(context: IContext)
| 653 | }; |
| 654 | |
| 655 | export const getForeignKeyValueErrors = async (context: IContext) => { |
| 656 | const { model, database, version } = context; |
| 657 | // Getting all foreign rules. |
| 658 | const foreignRelations = model.relations.filter( |
| 659 | (relation) => relation.type === Relationships.HAS_ONE, |
| 660 | ); |
| 661 | |
| 662 | const tasks: BulkTask<IForeignKeyTask, boolean>[] = []; |
| 663 | for (const relation of foreignRelations) { |
| 664 | const value = context.formData[relation.foreignKey]; |
| 665 | tasks.push({ |
| 666 | data: { |
| 667 | value, |
| 668 | relation, |
| 669 | }, |
| 670 | promise: validateForeignValues(database, version, relation, value), |
| 671 | }); |
| 672 | } |
| 673 | |
| 674 | const results = await Promise.all(tasks.map((promise) => promise.promise)); |
| 675 | return results |
| 676 | .map((result, index) => { |
| 677 | if (result) { |
| 678 | return null; |
| 679 | } |
| 680 | |
| 681 | const data = tasks[index].data; |
| 682 | |
| 683 | return `Invalid value: ${data.relation.foreignKey} = ${data.value}`; |
| 684 | }) |
| 685 | .filter((error) => error); |
| 686 | }; |
| 687 | |
| 688 | export const getSearchData = ( |
| 689 | model: IModelService, |
no test coverage detected