mirror of
https://github.com/immich-app/immich.git
synced 2025-05-17 05:02:16 +02:00
fix: schema ci checks (#18146)
This commit is contained in:
parent
bbd8de177b
commit
a6e5e4f625
6 changed files with 35 additions and 16 deletions
.github/workflows
server/src/schema
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…
Add table
Add a link
Reference in a new issue