mirror of
https://github.com/immich-app/immich.git
synced 2025-12-06 01:10:00 +03:00
feat: sql tools array as default value (#24389)
This commit is contained in:
@@ -2,7 +2,7 @@ import { asOptions } from 'src/sql-tools/helpers';
|
|||||||
import { register } from 'src/sql-tools/register';
|
import { register } from 'src/sql-tools/register';
|
||||||
import { ColumnStorage, ColumnType, DatabaseEnum } from 'src/sql-tools/types';
|
import { ColumnStorage, ColumnType, DatabaseEnum } from 'src/sql-tools/types';
|
||||||
|
|
||||||
export type ColumnValue = null | boolean | string | number | object | Date | (() => string);
|
export type ColumnValue = null | boolean | string | number | Array<unknown> | object | Date | (() => string);
|
||||||
|
|
||||||
export type ColumnBaseOptions = {
|
export type ColumnBaseOptions = {
|
||||||
name?: string;
|
name?: string;
|
||||||
|
|||||||
@@ -39,6 +39,10 @@ export const fromColumnValue = (columnValue?: ColumnValue) => {
|
|||||||
return `'${value.toISOString()}'`;
|
return `'${value.toISOString()}'`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Array.isArray(value)) {
|
||||||
|
return "'{}'";
|
||||||
|
}
|
||||||
|
|
||||||
return `'${String(value)}'`;
|
return `'${String(value)}'`;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
@@ -394,6 +394,20 @@ describe(schemaDiff.name, () => {
|
|||||||
|
|
||||||
expect(diff.items).toEqual([]);
|
expect(diff.items).toEqual([]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should support arrays, ignoring types', () => {
|
||||||
|
const diff = schemaDiff(
|
||||||
|
fromColumn({ name: 'column1', type: 'character varying', isArray: true, default: "'{}'" }),
|
||||||
|
fromColumn({
|
||||||
|
name: 'column1',
|
||||||
|
type: 'character varying',
|
||||||
|
isArray: true,
|
||||||
|
default: "'{}'::character varying[]",
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
|
||||||
|
expect(diff.items).toEqual([]);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
40
server/test/sql-tools/column-default-array.stub.ts
Normal file
40
server/test/sql-tools/column-default-array.stub.ts
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
import { Column, DatabaseSchema, Table } from 'src/sql-tools';
|
||||||
|
|
||||||
|
@Table()
|
||||||
|
export class Table1 {
|
||||||
|
@Column({ type: 'character varying', array: true, default: [] })
|
||||||
|
column1!: string[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export const description = 'should register a table with a column with a default value (array)';
|
||||||
|
export const schema: DatabaseSchema = {
|
||||||
|
databaseName: 'postgres',
|
||||||
|
schemaName: 'public',
|
||||||
|
functions: [],
|
||||||
|
enums: [],
|
||||||
|
extensions: [],
|
||||||
|
parameters: [],
|
||||||
|
overrides: [],
|
||||||
|
tables: [
|
||||||
|
{
|
||||||
|
name: 'table1',
|
||||||
|
columns: [
|
||||||
|
{
|
||||||
|
name: 'column1',
|
||||||
|
tableName: 'table1',
|
||||||
|
type: 'character varying',
|
||||||
|
nullable: false,
|
||||||
|
isArray: true,
|
||||||
|
primary: false,
|
||||||
|
synchronize: true,
|
||||||
|
default: "'{}'",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
indexes: [],
|
||||||
|
triggers: [],
|
||||||
|
constraints: [],
|
||||||
|
synchronize: true,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
warnings: [],
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user