{"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;;;;;;;;;;;"}