(config: {
version: Version;
tables: Tables;
up?: CustomMigrationFn;
down?: CustomMigrationFn;
relations?: RM;
})
| 726 | } |
| 727 | |
| 728 | export function schema< |
| 729 | Version extends string, |
| 730 | Tables extends Record<string, AnyTable>, |
| 731 | RM extends RelationsMap<Tables>, |
| 732 | >(config: { |
| 733 | version: Version; |
| 734 | tables: Tables; |
| 735 | |
| 736 | up?: CustomMigrationFn; |
| 737 | down?: CustomMigrationFn; |
| 738 | relations?: RM; |
| 739 | }): Schema<Version, CreateSchemaTables<Tables, RM>> { |
| 740 | const { tables, relations } = config; |
| 741 | |
| 742 | for (const k in tables) { |
| 743 | if (!tables[k]) { |
| 744 | delete tables[k]; |
| 745 | continue; |
| 746 | } |
| 747 | |
| 748 | tables[k].ormName = k; |
| 749 | } |
| 750 | |
| 751 | if (relations) setRelations(tables, relations); |
| 752 | const out: Schema<Version, CreateSchemaTables<Tables, RM>> = { |
| 753 | ...config, |
| 754 | tables: config.tables as unknown as CreateSchemaTables<Tables, RM>, |
| 755 | clone() { |
| 756 | const cloneTables: Record<string, AnyTable> = {}; |
| 757 | |
| 758 | for (const [k, v] of Object.entries(tables)) { |
| 759 | cloneTables[k] = v.clone(); |
| 760 | } |
| 761 | |
| 762 | return schema({ |
| 763 | ...config, |
| 764 | tables: cloneTables as Tables, |
| 765 | }); |
| 766 | }, |
| 767 | }; |
| 768 | |
| 769 | validateSchema(out); |
| 770 | return out; |
| 771 | } |
| 772 | |
| 773 | function setRelations<Tables extends Record<string, AnyTable>>( |
| 774 | tables: Tables, |
no test coverage detected