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}" |           echo "Changed files: ${CHANGED_FILES}" | ||||||
|           exit 1 |           exit 1 | ||||||
| 
 | 
 | ||||||
|   generated-typeorm-migrations-up-to-date: |   sql-schema-up-to-date: | ||||||
|     name: TypeORM Checks |     name: SQL Schema Checks | ||||||
|     runs-on: ubuntu-latest |     runs-on: ubuntu-latest | ||||||
|     permissions: |     permissions: | ||||||
|       contents: read |       contents: read | ||||||
| @ -641,7 +641,7 @@ jobs: | |||||||
| 
 | 
 | ||||||
|       - name: Generate new migrations |       - name: Generate new migrations | ||||||
|         continue-on-error: true |         continue-on-error: true | ||||||
|         run: npm run migrations:generate TestMigration |         run: npm run migrations:generate src/TestMigration | ||||||
| 
 | 
 | ||||||
|       - name: Find file changes |       - name: Find file changes | ||||||
|         uses: tj-actions/verify-changed-files@a1c6acee9df209257a246f2cc6ae8cb6581c1edf # v20 |         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'; | import { registerEnum } from 'src/sql-tools'; | ||||||
| 
 | 
 | ||||||
| export const assets_status_enum = registerEnum({ | export const assets_status_enum = registerEnum({ | ||||||
| @ -10,3 +10,8 @@ export const asset_face_source_type = registerEnum({ | |||||||
|   name: 'sourcetype', |   name: 'sourcetype', | ||||||
|   values: Object.values(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, asset_visibility_enum, assets_status_enum } from 'src/schema/enums'; | ||||||
| import { asset_face_source_type, assets_status_enum } from 'src/schema/enums'; |  | ||||||
| import { | import { | ||||||
|   assets_delete_audit, |   assets_delete_audit, | ||||||
|   f_concat_ws, |   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 { UserMetadataTable } from 'src/schema/tables/user-metadata.table'; | ||||||
| import { UserTable } from 'src/schema/tables/user.table'; | import { UserTable } from 'src/schema/tables/user.table'; | ||||||
| import { VersionHistoryTable } from 'src/schema/tables/version-history.table'; | import { VersionHistoryTable } from 'src/schema/tables/version-history.table'; | ||||||
| import { ConfigurationParameter, Database, Extensions, registerEnum } from 'src/sql-tools'; | import { ConfigurationParameter, Database, Extensions } from 'src/sql-tools'; | ||||||
| 
 |  | ||||||
| export const asset_visibility_enum = registerEnum({ |  | ||||||
|   name: 'asset_visibility_enum', |  | ||||||
|   values: Object.values(AssetVisibility), |  | ||||||
| }); |  | ||||||
| 
 | 
 | ||||||
| @Extensions(['uuid-ossp', 'unaccent', 'cube', 'earthdistance', 'pg_trgm', 'plpgsql']) | @Extensions(['uuid-ossp', 'unaccent', 'cube', 'earthdistance', 'pg_trgm', 'plpgsql']) | ||||||
| @ConfigurationParameter({ name: 'search_path', value: () => '"$user", public, vectors', scope: 'database' }) | @ConfigurationParameter({ name: 'search_path', value: () => '"$user", public, vectors', scope: 'database' }) | ||||||
| @ -107,5 +101,5 @@ export class ImmichDatabase { | |||||||
|     assets_delete_audit, |     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 { UpdatedAtTrigger, UpdateIdColumn } from 'src/decorators'; | ||||||
| import { AssetStatus, AssetType, AssetVisibility } from 'src/enum'; | import { AssetStatus, AssetType, AssetVisibility } from 'src/enum'; | ||||||
| import { asset_visibility_enum } from 'src/schema'; | import { asset_visibility_enum, assets_status_enum } from 'src/schema/enums'; | ||||||
| import { assets_status_enum } from 'src/schema/enums'; |  | ||||||
| import { assets_delete_audit } from 'src/schema/functions'; | import { assets_delete_audit } from 'src/schema/functions'; | ||||||
| import { LibraryTable } from 'src/schema/tables/library.table'; | import { LibraryTable } from 'src/schema/tables/library.table'; | ||||||
| import { StackTable } from 'src/schema/tables/stack.table'; | import { StackTable } from 'src/schema/tables/stack.table'; | ||||||
|  | |||||||
| @ -1,6 +1,6 @@ | |||||||
| import { Column, PrimaryGeneratedColumn, Table } from 'src/sql-tools'; | import { Column, PrimaryGeneratedColumn, Table } from 'src/sql-tools'; | ||||||
| 
 | 
 | ||||||
| @Table({ name: 'naturalearth_countries' }) | @Table({ name: 'naturalearth_countries', primaryConstraintName: 'naturalearth_countries_pkey' }) | ||||||
| export class NaturalEarthCountriesTable { | export class NaturalEarthCountriesTable { | ||||||
|   @PrimaryGeneratedColumn({ strategy: 'identity' }) |   @PrimaryGeneratedColumn({ strategy: 'identity' }) | ||||||
|   id!: number; |   id!: number; | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user