mirror of
				https://github.com/immich-app/immich.git
				synced 2025-10-31 02:27:08 -04:00 
			
		
		
		
	
		
			
				
	
	
		
			119 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			119 lines
		
	
	
		
			2.6 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import { Column, ConstraintType, DatabaseSchema, ForeignKeyConstraint, PrimaryColumn, Table } from 'src/sql-tools';
 | |
| 
 | |
| @Table()
 | |
| export class Table1 {
 | |
|   @PrimaryColumn({ type: 'uuid' })
 | |
|   id1!: string;
 | |
| 
 | |
|   @PrimaryColumn({ type: 'uuid' })
 | |
|   id2!: string;
 | |
| }
 | |
| 
 | |
| @Table()
 | |
| @ForeignKeyConstraint({
 | |
|   columns: ['parentId1', 'parentId2'],
 | |
|   referenceTable: () => Table1,
 | |
|   referenceColumns: ['id2', 'id1'],
 | |
| })
 | |
| export class Table2 {
 | |
|   @Column({ type: 'uuid' })
 | |
|   parentId1!: string;
 | |
| 
 | |
|   @Column({ type: 'uuid' })
 | |
|   parentId2!: string;
 | |
| }
 | |
| 
 | |
| export const description = 'should create a foreign key constraint to the target table';
 | |
| export const schema: DatabaseSchema = {
 | |
|   databaseName: 'postgres',
 | |
|   schemaName: 'public',
 | |
|   functions: [],
 | |
|   enums: [],
 | |
|   extensions: [],
 | |
|   parameters: [],
 | |
|   overrides: [],
 | |
|   tables: [
 | |
|     {
 | |
|       name: 'table1',
 | |
|       columns: [
 | |
|         {
 | |
|           name: 'id1',
 | |
|           tableName: 'table1',
 | |
|           type: 'uuid',
 | |
|           nullable: false,
 | |
|           isArray: false,
 | |
|           primary: true,
 | |
|           synchronize: true,
 | |
|         },
 | |
|         {
 | |
|           name: 'id2',
 | |
|           tableName: 'table1',
 | |
|           type: 'uuid',
 | |
|           nullable: false,
 | |
|           isArray: false,
 | |
|           primary: true,
 | |
|           synchronize: true,
 | |
|         },
 | |
|       ],
 | |
|       indexes: [],
 | |
|       triggers: [],
 | |
|       constraints: [
 | |
|         {
 | |
|           type: ConstraintType.PRIMARY_KEY,
 | |
|           name: 'PK_e457e8b1301b7bc06ef78188ee4',
 | |
|           tableName: 'table1',
 | |
|           columnNames: ['id1', 'id2'],
 | |
|           synchronize: true,
 | |
|         },
 | |
|       ],
 | |
|       synchronize: true,
 | |
|     },
 | |
|     {
 | |
|       name: 'table2',
 | |
|       columns: [
 | |
|         {
 | |
|           name: 'parentId1',
 | |
|           tableName: 'table2',
 | |
|           type: 'uuid',
 | |
|           nullable: false,
 | |
|           isArray: false,
 | |
|           primary: false,
 | |
|           synchronize: true,
 | |
|         },
 | |
|         {
 | |
|           name: 'parentId2',
 | |
|           tableName: 'table2',
 | |
|           type: 'uuid',
 | |
|           nullable: false,
 | |
|           isArray: false,
 | |
|           primary: false,
 | |
|           synchronize: true,
 | |
|         },
 | |
|       ],
 | |
|       indexes: [
 | |
|         {
 | |
|           name: 'IDX_aed36d04470eba20161aa8b1dc',
 | |
|           tableName: 'table2',
 | |
|           columnNames: ['parentId1', 'parentId2'],
 | |
|           unique: false,
 | |
|           synchronize: true,
 | |
|         },
 | |
|       ],
 | |
|       triggers: [],
 | |
|       constraints: [
 | |
|         {
 | |
|           type: ConstraintType.FOREIGN_KEY,
 | |
|           name: 'FK_aed36d04470eba20161aa8b1dc6',
 | |
|           tableName: 'table2',
 | |
|           columnNames: ['parentId1', 'parentId2'],
 | |
|           referenceColumnNames: ['id2', 'id1'],
 | |
|           referenceTableName: 'table1',
 | |
|           synchronize: true,
 | |
|         },
 | |
|       ],
 | |
|       synchronize: true,
 | |
|     },
 | |
|   ],
 | |
|   warnings: [],
 | |
| };
 |