This commit is contained in:
Devesh Kolte 2026-08-14 00:28:31 +01:00 committed by GitHub
commit b488ce1bf0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 44 additions and 12 deletions

View file

@ -230,8 +230,8 @@ export type Session = {
createdAt: Date;
updatedAt: Date;
expiresAt: Date | null;
deviceOS: string;
deviceType: string;
deviceOS: string | null;
deviceType: string | null;
appVersion: string | null;
pinExpiresAt: Date | null;
isPendingSyncReset: boolean;

View file

@ -5,8 +5,8 @@ import z from 'zod';
const SessionCreateSchema = z
.object({
duration: z.int().min(1).optional().describe('Session duration in seconds'),
deviceType: z.string().optional().describe('Device type'),
deviceOS: z.string().optional().describe('Device OS'),
deviceType: z.string().nullish().transform((val) => (val === '' ? null : val)).describe('Device type'),
deviceOS: z.string().nullish().transform((val) => (val === '' ? null : val)).describe('Device OS'),
})
.meta({ id: 'SessionCreateDto' });
@ -23,8 +23,8 @@ const SessionResponseSchema = z
updatedAt: z.string().describe('Last update date'),
expiresAt: z.string().optional().describe('Expiration date'),
current: z.boolean().describe('Is current session'),
deviceType: z.string().describe('Device type'),
deviceOS: z.string().describe('Device OS'),
deviceType: z.string().nullable().describe('Device type'),
deviceOS: z.string().nullable().describe('Device OS'),
appVersion: z.string().nullable().describe('App version'),
isPendingSyncReset: z.boolean().describe('Is pending sync reset'),
})

View file

@ -0,0 +1,19 @@
import { Kysely, sql } from 'kysely';
export async function up(db: Kysely<any>): Promise<void> {
await sql`ALTER TABLE "session" ALTER COLUMN "deviceType" DROP NOT NULL;`.execute(db);
await sql`ALTER TABLE "session" ALTER COLUMN "deviceType" SET DEFAULT NULL;`.execute(db);
await sql`UPDATE "session" SET "deviceType" = NULL WHERE "deviceType" = '';`.execute(db);
await sql`ALTER TABLE "session" ALTER COLUMN "deviceOS" DROP NOT NULL;`.execute(db);
await sql`ALTER TABLE "session" ALTER COLUMN "deviceOS" SET DEFAULT NULL;`.execute(db);
await sql`UPDATE "session" SET "deviceOS" = NULL WHERE "deviceOS" = '';`.execute(db);
}
export async function down(): Promise<void> {
await sql`UPDATE "session" SET "deviceOS" = '' WHERE "deviceOS" IS NULL;`.execute(db);
await sql`ALTER TABLE "session" ALTER COLUMN "deviceOS" SET DEFAULT '';`.execute(db);
await sql`ALTER TABLE "session" ALTER COLUMN "deviceOS" SET NOT NULL;`.execute(db);
await sql`UPDATE "session" SET "deviceType" = '' WHERE "deviceType" IS NULL;`.execute(db);
await sql`ALTER TABLE "session" ALTER COLUMN "deviceType" SET DEFAULT '';`.execute(db);
await sql`ALTER TABLE "session" ALTER COLUMN "deviceType" SET NOT NULL;`.execute(db);
}

View file

@ -0,0 +1,13 @@
import { Kysely, sql } from 'kysely';
export async function up(db: Kysely<any>): Promise<void> {
await sql`ALTER TABLE "asset_exif" ALTER COLUMN "description" DROP NOT NULL;`.execute(db);
await sql`ALTER TABLE "asset_exif" ALTER COLUMN "description" SET DEFAULT NULL;`.execute(db);
await sql`UPDATE "asset_exif" SET "description" = NULL WHERE "description" = '';`.execute(db);
}
export async function down(): Promise<void> {
await sql`UPDATE "asset_exif" SET "description" = '' WHERE "description" IS NULL;`.execute(db);
await sql`ALTER TABLE "asset_exif" ALTER COLUMN "description" SET DEFAULT '';`.execute(db);
await sql`ALTER TABLE "asset_exif" ALTER COLUMN "description" SET NOT NULL;`.execute(db);
}

View file

@ -74,8 +74,8 @@ export class AssetExifTable {
@Column({ type: 'character varying', nullable: true })
country!: string | null;
@Column({ type: 'text', default: '' })
description!: Generated<string>; // or caption
@Column({ type: 'text', nullable: true, default: null })
description!: string | null; // or caption
@Column({ type: 'double precision', nullable: true })
fps!: number | null;

View file

@ -35,11 +35,11 @@ export class SessionTable {
@ForeignKeyColumn(() => SessionTable, { onUpdate: 'CASCADE', onDelete: 'CASCADE', nullable: true })
parentId!: string | null;
@Column({ default: '' })
deviceType!: Generated<string>;
@Column({ nullable: true, default: null })
deviceType!: string | null;
@Column({ default: '' })
deviceOS!: Generated<string>;
@Column({ nullable: true, default: null })
deviceOS!: string | null;
@Column({ nullable: true })
appVersion!: string | null;