UNPKG

@gensx/storage

Version:

Cloud storage, blobs, sqlite, and vector database providers/hooks for GenSX.

1 lines 8.39 kB
{"version":3,"file":"types.cjs","sources":["@gensx/storage/../../../../src/database/types.ts"],"sourcesContent":["import { InArgs } from \"@libsql/client\";\n\n/**\n * Error types for database operations\n */\nexport type DatabaseErrorCode =\n | \"NOT_FOUND\"\n | \"PERMISSION_DENIED\"\n | \"CONFLICT\"\n | \"SYNTAX_ERROR\"\n | \"CONSTRAINT_VIOLATION\"\n | \"INTERNAL_ERROR\"\n | \"NETWORK_ERROR\"\n | \"TRANSACTION_ERROR\";\n\n/**\n * Abstract base error class for database operations\n */\nexport abstract class DatabaseError extends Error {\n constructor(\n public readonly code: DatabaseErrorCode,\n message: string,\n public readonly cause?: Error,\n ) {\n super(message);\n this.name = \"DatabaseError\";\n }\n}\n\n/**\n * Error class for when a database is not found\n */\nexport class DatabaseNotFoundError extends DatabaseError {\n constructor(message: string, cause?: Error) {\n super(\"NOT_FOUND\", message, cause);\n this.name = \"DatabaseNotFoundError\";\n }\n}\n\n/**\n * Error class for permission denied errors\n */\nexport class DatabasePermissionDeniedError extends DatabaseError {\n constructor(message: string, cause?: Error) {\n super(\"PERMISSION_DENIED\", message, cause);\n this.name = \"DatabasePermissionDeniedError\";\n }\n}\n\n/**\n * Error class for SQL syntax errors\n */\nexport class DatabaseSyntaxError extends DatabaseError {\n constructor(message: string, cause?: Error) {\n super(\"SYNTAX_ERROR\", message, cause);\n this.name = \"DatabaseSyntaxError\";\n }\n}\n\n/**\n * Error class for constraint violations\n */\nexport class DatabaseConstraintError extends DatabaseError {\n constructor(message: string, cause?: Error) {\n super(\"CONSTRAINT_VIOLATION\", message, cause);\n this.name = \"DatabaseConstraintError\";\n }\n}\n\n/**\n * Error class for internal errors\n */\nexport class DatabaseInternalError extends DatabaseError {\n constructor(message: string, cause?: Error) {\n super(\"INTERNAL_ERROR\", message, cause);\n this.name = \"DatabaseInternalError\";\n }\n}\n\n/**\n * Error class for network errors\n */\nexport class DatabaseNetworkError extends DatabaseError {\n constructor(message: string, cause?: Error) {\n super(\"NETWORK_ERROR\", message, cause);\n this.name = \"DatabaseNetworkError\";\n }\n}\n\n/**\n * Error class for transaction errors\n */\nexport class DatabaseTransactionError extends DatabaseError {\n constructor(message: string, cause?: Error) {\n super(\"TRANSACTION_ERROR\", message, cause);\n this.name = \"DatabaseTransactionError\";\n }\n}\n\n/**\n * SQL execution result\n */\nexport interface DatabaseResult {\n columns: string[];\n rows: unknown[][];\n rowsAffected: number;\n lastInsertId?: number;\n}\n\n/**\n * SQL statement with optional parameters\n */\nexport interface DatabaseStatement {\n sql: string;\n params?: InArgs;\n}\n\n/**\n * Batch execution results\n */\nexport interface DatabaseBatchResult {\n results: DatabaseResult[];\n}\n\n/**\n * Database table information\n */\nexport interface DatabaseTableInfo {\n name: string;\n columns: DatabaseColumnInfo[];\n}\n\n/**\n * Column information\n */\nexport interface DatabaseColumnInfo {\n name: string;\n type: string;\n notNull: boolean;\n defaultValue?: unknown;\n primaryKey: boolean;\n}\n\n/**\n * Database information\n */\nexport interface DatabaseInfo {\n name: string;\n size: number;\n lastModified: Date;\n tables: DatabaseTableInfo[];\n}\n\n/**\n * Result of ensuring a database exists\n */\nexport interface EnsureDatabaseResult {\n exists: boolean;\n created: boolean;\n}\n\n/**\n * Result of deleting a database\n */\nexport interface DeleteDatabaseResult {\n deleted: boolean;\n}\n\n/**\n * Interface for a database\n */\nexport interface Database {\n /**\n * Execute a single SQL statement\n */\n execute(sql: string, params?: InArgs): Promise<DatabaseResult>;\n\n /**\n * Execute multiple SQL statements in a transaction\n */\n batch(statements: DatabaseStatement[]): Promise<DatabaseBatchResult>;\n\n /**\n * Execute multiple SQL statements as a script (without transaction semantics)\n */\n executeMultiple(sql: string): Promise<DatabaseBatchResult>;\n\n /**\n * Run SQL migration statements with foreign keys disabled\n */\n migrate(sql: string): Promise<DatabaseBatchResult>;\n\n /**\n * Get information about the database\n */\n getInfo(): Promise<DatabaseInfo>;\n\n /**\n * Close the database connection\n */\n close(): void;\n}\n\n/**\n * Interface for database storage\n */\nexport interface DatabaseStorage {\n /**\n * Get a database by name\n */\n getDatabase(name: string): Database;\n\n /**\n * List all databases\n * @param options Options for listing databases\n * @returns Promise with array of database names and optional next cursor for pagination\n */\n listDatabases(options?: { limit?: number; cursor?: string }): Promise<{\n databases: { name: string; createdAt: Date }[];\n nextCursor?: string;\n }>;\n\n /**\n * Ensure a database exists\n * @param name Database name\n * @returns Promise resolving to result with exists and created flags\n */\n ensureDatabase(name: string): Promise<EnsureDatabaseResult>;\n\n /**\n * Delete a database\n * @param name Database name\n * @returns Promise resolving to result with deleted flag\n */\n deleteDatabase(name: string): Promise<DeleteDatabaseResult>;\n\n /**\n * Check if a database has been ensured\n */\n hasEnsuredDatabase(name: string): boolean;\n}\n\n/**\n * Provider configuration kinds\n */\nexport type DatabaseStorageKind = \"filesystem\" | \"cloud\";\n\n/**\n * Base storage configuration\n */\nexport interface BaseDatabaseStorageOptions {\n /**\n * Storage kind - if not provided, will be determined from environment\n */\n kind?: DatabaseStorageKind;\n\n /**\n * Optional project name. By default, the GENSX_PROJECT environment variable will be used then the projectName from the gensx.yaml file.\n */\n project?: string;\n\n /**\n * Optional environment name. By default, the GENSX_ENV environment variable will be used then the currently selected environment in the CLI (e.g. `gensx env select`).\n */\n environment?: string;\n}\n\n/**\n * Filesystem storage configuration\n */\nexport interface FileSystemDatabaseStorageOptions\n extends BaseDatabaseStorageOptions {\n kind?: \"filesystem\";\n\n /**\n * Root directory for storing database files\n */\n rootDir?: string;\n}\n\n/**\n * Cloud storage configuration\n */\nexport interface CloudDatabaseStorageOptions\n extends BaseDatabaseStorageOptions {\n kind?: \"cloud\";\n}\n\n/**\n * Union type for database storage configuration\n */\nexport type DatabaseStorageOptions =\n | FileSystemDatabaseStorageOptions\n | CloudDatabaseStorageOptions;\n"],"names":[],"mappings":";;;;;;;;AAeA;;AAEG;AACG,MAAgB,aAAc,SAAQ,KAAK,CAAA;AAE7B,IAAA,IAAA;AAEA,IAAA,KAAA;AAHlB,IAAA,WAAA,CACkB,IAAuB,EACvC,OAAe,EACC,KAAa,EAAA;QAE7B,KAAK,CAAC,OAAO,CAAC;QAJE,IAAI,CAAA,IAAA,GAAJ,IAAI;QAEJ,IAAK,CAAA,KAAA,GAAL,KAAK;AAGrB,QAAA,IAAI,CAAC,IAAI,GAAG,eAAe;;AAE9B;AAED;;AAEG;AACG,MAAO,qBAAsB,SAAQ,aAAa,CAAA;IACtD,WAAY,CAAA,OAAe,EAAE,KAAa,EAAA;AACxC,QAAA,KAAK,CAAC,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC;AAClC,QAAA,IAAI,CAAC,IAAI,GAAG,uBAAuB;;AAEtC;AAED;;AAEG;AACG,MAAO,6BAA8B,SAAQ,aAAa,CAAA;IAC9D,WAAY,CAAA,OAAe,EAAE,KAAa,EAAA;AACxC,QAAA,KAAK,CAAC,mBAAmB,EAAE,OAAO,EAAE,KAAK,CAAC;AAC1C,QAAA,IAAI,CAAC,IAAI,GAAG,+BAA+B;;AAE9C;AAED;;AAEG;AACG,MAAO,mBAAoB,SAAQ,aAAa,CAAA;IACpD,WAAY,CAAA,OAAe,EAAE,KAAa,EAAA;AACxC,QAAA,KAAK,CAAC,cAAc,EAAE,OAAO,EAAE,KAAK,CAAC;AACrC,QAAA,IAAI,CAAC,IAAI,GAAG,qBAAqB;;AAEpC;AAED;;AAEG;AACG,MAAO,uBAAwB,SAAQ,aAAa,CAAA;IACxD,WAAY,CAAA,OAAe,EAAE,KAAa,EAAA;AACxC,QAAA,KAAK,CAAC,sBAAsB,EAAE,OAAO,EAAE,KAAK,CAAC;AAC7C,QAAA,IAAI,CAAC,IAAI,GAAG,yBAAyB;;AAExC;AAED;;AAEG;AACG,MAAO,qBAAsB,SAAQ,aAAa,CAAA;IACtD,WAAY,CAAA,OAAe,EAAE,KAAa,EAAA;AACxC,QAAA,KAAK,CAAC,gBAAgB,EAAE,OAAO,EAAE,KAAK,CAAC;AACvC,QAAA,IAAI,CAAC,IAAI,GAAG,uBAAuB;;AAEtC;AAED;;AAEG;AACG,MAAO,oBAAqB,SAAQ,aAAa,CAAA;IACrD,WAAY,CAAA,OAAe,EAAE,KAAa,EAAA;AACxC,QAAA,KAAK,CAAC,eAAe,EAAE,OAAO,EAAE,KAAK,CAAC;AACtC,QAAA,IAAI,CAAC,IAAI,GAAG,sBAAsB;;AAErC;AAED;;AAEG;AACG,MAAO,wBAAyB,SAAQ,aAAa,CAAA;IACzD,WAAY,CAAA,OAAe,EAAE,KAAa,EAAA;AACxC,QAAA,KAAK,CAAC,mBAAmB,EAAE,OAAO,EAAE,KAAK,CAAC;AAC1C,QAAA,IAAI,CAAC,IAAI,GAAG,0BAA0B;;AAEzC;;;;;;;;;;;"}