UNPKG

sveltekit-sync

Version:
255 lines (254 loc) 10.5 kB
import type { PostgresJsDatabase } from 'drizzle-orm/postgres-js'; import type { ServerAdapter, SyncOperation } from '../types.ts'; export interface DrizzleAdapterConfig { db: PostgresJsDatabase; schema: Record<string, any>; getFilter?: (table: string, userId: string) => any; transformOut?: (table: string, data: any) => any; transformIn?: (table: string, data: any) => any; } export declare const syncMetadata: { _version: import("drizzle-orm/column-builder", { with: { "resolution-mode": "require" } }).HasDefault<import("drizzle-orm/column-builder", { with: { "resolution-mode": "require" } }).NotNull<import("drizzle-orm/pg-core", { with: { "resolution-mode": "require" } }).PgIntegerBuilderInitial<"_version">>>; _updatedAt: import("drizzle-orm").HasDefault<import("drizzle-orm/column-builder", { with: { "resolution-mode": "require" } }).NotNull<import("drizzle-orm/pg-core", { with: { "resolution-mode": "require" } }).PgTimestampBuilderInitial<"_updated_at">>>; _clientId: import("drizzle-orm/pg-core", { with: { "resolution-mode": "require" } }).PgTextBuilderInitial<"_client_id", [string, ...string[]]>; _isDeleted: import("drizzle-orm/column-builder", { with: { "resolution-mode": "require" } }).HasDefault<import("drizzle-orm/pg-core", { with: { "resolution-mode": "require" } }).PgBooleanBuilderInitial<"_is_deleted">>; }; export declare const syncLog: import("drizzle-orm/pg-core/table", { with: { "resolution-mode": "require" } }).PgTableWithColumns<{ name: "_sync_log"; schema: undefined; columns: { id: import("drizzle-orm/pg-core", { with: { "resolution-mode": "require" } }).PgColumn<{ name: "id"; tableName: "_sync_log"; dataType: "string"; columnType: "PgUUID"; data: string; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: true; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; tableName: import("drizzle-orm/pg-core", { with: { "resolution-mode": "require" } }).PgColumn<{ name: "table_name"; tableName: "_sync_log"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; recordId: import("drizzle-orm/pg-core", { with: { "resolution-mode": "require" } }).PgColumn<{ name: "record_id"; tableName: "_sync_log"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; operation: import("drizzle-orm/pg-core", { with: { "resolution-mode": "require" } }).PgColumn<{ name: "operation"; tableName: "_sync_log"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; data: import("drizzle-orm/pg-core", { with: { "resolution-mode": "require" } }).PgColumn<{ name: "data"; tableName: "_sync_log"; dataType: "json"; columnType: "PgJsonb"; data: unknown; driverParam: unknown; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; timestamp: import("drizzle-orm/pg-core", { with: { "resolution-mode": "require" } }).PgColumn<{ name: "timestamp"; tableName: "_sync_log"; dataType: "date"; columnType: "PgTimestamp"; data: Date; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; clientId: import("drizzle-orm/pg-core", { with: { "resolution-mode": "require" } }).PgColumn<{ name: "client_id"; tableName: "_sync_log"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: false; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; userId: import("drizzle-orm/pg-core", { with: { "resolution-mode": "require" } }).PgColumn<{ name: "user_id"; tableName: "_sync_log"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; }; dialect: "pg"; }>; export declare const clientState: import("drizzle-orm/pg-core/table", { with: { "resolution-mode": "require" } }).PgTableWithColumns<{ name: "_sync_client_state"; schema: undefined; columns: { clientId: import("drizzle-orm/pg-core", { with: { "resolution-mode": "require" } }).PgColumn<{ name: "client_id"; tableName: "_sync_client_state"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: true; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; userId: import("drizzle-orm/pg-core", { with: { "resolution-mode": "require" } }).PgColumn<{ name: "user_id"; tableName: "_sync_client_state"; dataType: "string"; columnType: "PgText"; data: string; driverParam: string; notNull: true; hasDefault: false; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: [string, ...string[]]; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; lastSync: import("drizzle-orm/pg-core", { with: { "resolution-mode": "require" } }).PgColumn<{ name: "last_sync"; tableName: "_sync_client_state"; dataType: "date"; columnType: "PgTimestamp"; data: Date; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; lastActive: import("drizzle-orm/pg-core", { with: { "resolution-mode": "require" } }).PgColumn<{ name: "last_active"; tableName: "_sync_client_state"; dataType: "date"; columnType: "PgTimestamp"; data: Date; driverParam: string; notNull: true; hasDefault: true; isPrimaryKey: false; isAutoincrement: false; hasRuntimeDefault: false; enumValues: undefined; baseColumn: never; identity: undefined; generated: undefined; }, {}, {}>; }; dialect: "pg"; }>; export declare class DrizzleAdapter implements ServerAdapter<PostgresJsDatabase> { private config; constructor(config: DrizzleAdapterConfig); insert(table: string, data: any): Promise<any>; update(table: string, id: string, data: any, expectedVersion: number): Promise<any>; delete(table: string, id: string): Promise<void>; findOne(table: string, id: string): Promise<any | null>; find(table: string, filter?: any): Promise<any[]>; getChangesSince(table: string, timestamp: number, userId?: string, excludeClientId?: string): Promise<SyncOperation[]>; applyOperation(op: SyncOperation, userId?: string): Promise<void>; checkConflict(table: string, id: string, expectedVersion: number): Promise<boolean>; batchInsert(table: string, records: any[]): Promise<any[]>; batchUpdate(table: string, updates: Array<{ id: string; data: any; }>): Promise<any[]>; logSyncOperation(op: SyncOperation, userId: string): Promise<void>; updateClientState(clientId: string, userId: string): Promise<void>; getClientState(clientId: string): Promise<ClientState | null>; transaction<T>(fn: (adapter: ServerAdapter) => Promise<T>): Promise<T>; }