mirror of
				https://github.com/immich-app/immich.git
				synced 2025-10-31 02:27:08 -04:00 
			
		
		
		
	fix: schema ci checks (#18146)
This commit is contained in:
		
							parent
							
								
									bbd8de177b
								
							
						
					
					
						commit
						a6e5e4f625
					
				
							
								
								
									
										6
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								.github/workflows/test.yml
									
									
									
									
										vendored
									
									
								
							| @ -593,8 +593,8 @@ jobs: | ||||
|           echo "Changed files: ${CHANGED_FILES}" | ||||
|           exit 1 | ||||
| 
 | ||||
|   generated-typeorm-migrations-up-to-date: | ||||
|     name: TypeORM Checks | ||||
|   sql-schema-up-to-date: | ||||
|     name: SQL Schema Checks | ||||
|     runs-on: ubuntu-latest | ||||
|     permissions: | ||||
|       contents: read | ||||
| @ -641,7 +641,7 @@ jobs: | ||||
| 
 | ||||
|       - name: Generate new migrations | ||||
|         continue-on-error: true | ||||
|         run: npm run migrations:generate TestMigration | ||||
|         run: npm run migrations:generate src/TestMigration | ||||
| 
 | ||||
|       - name: Find file changes | ||||
|         uses: tj-actions/verify-changed-files@a1c6acee9df209257a246f2cc6ae8cb6581c1edf # v20 | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| import { AssetStatus, SourceType } from 'src/enum'; | ||||
| import { AssetStatus, AssetVisibility, SourceType } from 'src/enum'; | ||||
| import { registerEnum } from 'src/sql-tools'; | ||||
| 
 | ||||
| export const assets_status_enum = registerEnum({ | ||||
| @ -10,3 +10,8 @@ export const asset_face_source_type = registerEnum({ | ||||
|   name: 'sourcetype', | ||||
|   values: Object.values(SourceType), | ||||
| }); | ||||
| 
 | ||||
| export const asset_visibility_enum = registerEnum({ | ||||
|   name: 'asset_visibility_enum', | ||||
|   values: Object.values(AssetVisibility), | ||||
| }); | ||||
|  | ||||
| @ -1,5 +1,4 @@ | ||||
| import { AssetVisibility } from 'src/enum'; | ||||
| import { asset_face_source_type, assets_status_enum } from 'src/schema/enums'; | ||||
| import { asset_face_source_type, asset_visibility_enum, assets_status_enum } from 'src/schema/enums'; | ||||
| import { | ||||
|   assets_delete_audit, | ||||
|   f_concat_ws, | ||||
| @ -46,12 +45,7 @@ import { UserAuditTable } from 'src/schema/tables/user-audit.table'; | ||||
| import { UserMetadataTable } from 'src/schema/tables/user-metadata.table'; | ||||
| import { UserTable } from 'src/schema/tables/user.table'; | ||||
| import { VersionHistoryTable } from 'src/schema/tables/version-history.table'; | ||||
| import { ConfigurationParameter, Database, Extensions, registerEnum } from 'src/sql-tools'; | ||||
| 
 | ||||
| export const asset_visibility_enum = registerEnum({ | ||||
|   name: 'asset_visibility_enum', | ||||
|   values: Object.values(AssetVisibility), | ||||
| }); | ||||
| import { ConfigurationParameter, Database, Extensions } from 'src/sql-tools'; | ||||
| 
 | ||||
| @Extensions(['uuid-ossp', 'unaccent', 'cube', 'earthdistance', 'pg_trgm', 'plpgsql']) | ||||
| @ConfigurationParameter({ name: 'search_path', value: () => '"$user", public, vectors', scope: 'database' }) | ||||
| @ -107,5 +101,5 @@ export class ImmichDatabase { | ||||
|     assets_delete_audit, | ||||
|   ]; | ||||
| 
 | ||||
|   enum = [assets_status_enum, asset_face_source_type]; | ||||
|   enum = [assets_status_enum, asset_face_source_type, asset_visibility_enum]; | ||||
| } | ||||
|  | ||||
| @ -0,0 +1,21 @@ | ||||
| import { Kysely, sql } from 'kysely'; | ||||
| 
 | ||||
| export async function up(db: Kysely<any>): Promise<void> { | ||||
|   const { rows } = await sql<{ db: string }>`SELECT current_database() as db`.execute(db); | ||||
|   const databaseName = rows[0].db; | ||||
|   await sql.raw(`ALTER DATABASE "${databaseName}" SET search_path TO "$user", public, vectors`).execute(db); | ||||
|   await sql`ALTER TABLE "naturalearth_countries" DROP CONSTRAINT IF EXISTS "PK_21a6d86d1ab5d841648212e5353";`.execute(db); | ||||
|   await sql`ALTER TABLE "naturalearth_countries" DROP CONSTRAINT IF EXISTS "naturalearth_countries_pkey";`.execute(db); | ||||
|   await sql`ALTER TABLE "naturalearth_countries" ADD CONSTRAINT "naturalearth_countries_pkey" PRIMARY KEY ("id") WITH (FILLFACTOR = 100);`.execute(db); | ||||
|   await sql`DROP INDEX IF EXISTS "IDX_02a43fd0b3c50fb6d7f0cb7282";`.execute(db); | ||||
|   await sql`DROP INDEX IF EXISTS "IDX_95ad7106dd7b484275443f580f";`.execute(db); | ||||
|   await sql`DROP INDEX IF EXISTS "IDX_7e077a8b70b3530138610ff5e0";`.execute(db); | ||||
|   await sql`DROP INDEX IF EXISTS "IDX_92e67dc508c705dd66c9461557";`.execute(db); | ||||
|   await sql`DROP INDEX IF EXISTS "IDX_6afb43681a21cf7815932bc38a";`.execute(db); | ||||
| } | ||||
| 
 | ||||
| export async function down(db: Kysely<any>): Promise<void> { | ||||
|   const { rows } = await sql<{ db: string }>`SELECT current_database() as db`.execute(db); | ||||
|   const databaseName = rows[0].db; | ||||
|   await sql.raw(`ALTER DATABASE "${databaseName}" RESET "search_path"`).execute(db); | ||||
| } | ||||
| @ -1,7 +1,6 @@ | ||||
| import { UpdatedAtTrigger, UpdateIdColumn } from 'src/decorators'; | ||||
| import { AssetStatus, AssetType, AssetVisibility } from 'src/enum'; | ||||
| import { asset_visibility_enum } from 'src/schema'; | ||||
| import { assets_status_enum } from 'src/schema/enums'; | ||||
| import { asset_visibility_enum, assets_status_enum } from 'src/schema/enums'; | ||||
| import { assets_delete_audit } from 'src/schema/functions'; | ||||
| import { LibraryTable } from 'src/schema/tables/library.table'; | ||||
| import { StackTable } from 'src/schema/tables/stack.table'; | ||||
|  | ||||
| @ -1,6 +1,6 @@ | ||||
| import { Column, PrimaryGeneratedColumn, Table } from 'src/sql-tools'; | ||||
| 
 | ||||
| @Table({ name: 'naturalearth_countries' }) | ||||
| @Table({ name: 'naturalearth_countries', primaryConstraintName: 'naturalearth_countries_pkey' }) | ||||
| export class NaturalEarthCountriesTable { | ||||
|   @PrimaryGeneratedColumn({ strategy: 'identity' }) | ||||
|   id!: number; | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user