{"version":3,"sources":["../src/backend/drizzle/execution/types.ts","../src/indexes/drizzle.ts"],"names":["isSqlFragment","renderSql","drizzleSql","bindSqlValue","throwUnsupportedSqlChunk","sql","compileNodeIndexKeys","pgUniqueIndex","pgIndex","compileIndexWhere","compileEdgeIndexKeys","sqliteUniqueIndex","sqliteIndex","SYSTEM_INDEX_DECLARATIONS","systemIndexName"],"mappings":"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","file":"chunk-DCYIUKIM.cjs","sourcesContent":["import { type SQL as DrizzleSql, sql as drizzleSql } from \"drizzle-orm\";\n\nimport { bindSqlValue } from \"../../../query/dialect/profile\";\nimport { type SqlDialect } from \"../../../query/dialect/types\";\nimport {\n  isSqlFragment,\n  renderSql,\n  type SqlFragment,\n  throwUnsupportedSqlChunk,\n} from \"../../../query/sql-fragment\";\nimport type {\n  AtomicSqlBatchExecutor,\n  CompiledAtomicSqlStatement,\n} from \"../../capabilities/atomic-sql-program\";\n\nexport type ExecutableSql = DrizzleSql | SqlFragment;\n\nexport type CompiledSqlQuery = CompiledAtomicSqlStatement;\n\n/**\n * A driver-native, all-or-nothing group of compiled statements.\n *\n * This is intentionally an optional execution surface. Most SQL drivers only\n * expose one-statement execution through Drizzle; drivers with a native batch\n * primitive can provide it without making callers guess whether a sequence is\n * actually transactional. The static name is deliberate: this hook submits a\n * complete batch to a native primitive and is not an interactive transaction\n * runner.\n */\nexport type PreparedSqlStatement = Readonly<{\n  execute: <TRow>(params: readonly unknown[]) => Promise<readonly TRow[]>;\n}>;\n\nexport type SqlExecutionAdapter = Readonly<{\n  compile: (query: ExecutableSql) => CompiledSqlQuery;\n  execute: <TRow>(query: ExecutableSql) => Promise<readonly TRow[]>;\n  executeCompiled?: <TRow>(\n    compiledQuery: CompiledSqlQuery,\n  ) => Promise<readonly TRow[]>;\n  /** Executes all statements atomically when the native driver supports it. */\n  executeAtomicBatch?: AtomicSqlBatchExecutor;\n  prepare?: (sqlText: string) => PreparedSqlStatement;\n  /**\n   * Runs `critical` with exclusive use of the connection: no statement from\n   * anywhere else can interleave with the ones it issues.\n   *\n   * Statement-at-a-time serialization is not enough for a *sequence* that must\n   * be atomic. `SET LOCAL` around a query is the motivating case — snapshot,\n   * set, select, restore. Two searches whose statements merely take turns can\n   * still interleave as `A snapshot → B snapshot → A set → B set → A select`,\n   * and `A` then runs under `B`'s settings.\n   *\n   * `critical` is handed the unqueued adapter, so it must not attempt to\n   * re-enter the queue. Present only on transaction-scoped (serialized)\n   * adapters; a pooled adapter needs no exclusion because every statement gets\n   * its own connection.\n   */\n  runExclusive?: <T>(\n    critical: (connection: SqlExecutionAdapter) => Promise<T>,\n  ) => Promise<T>;\n  /**\n   * Recognizes this engine's own commit-conflict shape when it is not\n   * PostgreSQL's `40001`/`40P01` SQLSTATE (or the fixed message fallback for\n   * a driver that drops the code). `createSqlBackend` registers this\n   * classifier against the exact backend object it returns; `isSerializationFailure`\n   * (`src/utils/sql-errors.ts`) consults it before falling back to its own\n   * SQLSTATE/message rules, so there remains ONE predicate every retry owner\n   * calls, never a second inline check for engines this covers.\n   */\n  serializationFailure?: (error: unknown) => boolean;\n}>;\n\ntype SqlCompiler = Readonly<{\n  sqlToQuery: (query: DrizzleSql) => CompiledSqlQuery;\n}>;\n\ntype DatabaseWithCompiler = Readonly<{\n  dialect?: SqlCompiler;\n}>;\n\ntype BackendName = \"PostgreSQL\" | \"SQLite\";\n\nconst DIALECT_BY_BACKEND_NAME = {\n  PostgreSQL: \"postgres\",\n  SQLite: \"sqlite\",\n} as const satisfies Record<BackendName, SqlDialect>;\n\nexport function compileQueryWithDialect(\n  db: unknown,\n  query: ExecutableSql,\n  backendName: BackendName,\n): CompiledSqlQuery {\n  if (isSqlFragment(query)) {\n    return renderSql(query, DIALECT_BY_BACKEND_NAME[backendName]);\n  }\n  const databaseWithCompiler = db as DatabaseWithCompiler;\n  const compiler = databaseWithCompiler.dialect;\n  if (compiler === undefined) {\n    throw new Error(`${backendName} backend is missing a SQL compiler`);\n  }\n  return compiler.sqlToQuery(query);\n}\n\n/**\n * Translates TypeGraph's fragment IR into Drizzle's adapter-native SQL object.\n *\n * Most execution paths render directly to text and parameters. Async SQLite\n * drivers expose only Drizzle's execution method, so that adapter needs this\n * lossless bridge at its final boundary.\n */\nexport function toDrizzleSql(\n  fragment: SqlFragment,\n  dialect: SqlDialect,\n): DrizzleSql {\n  const chunks = fragment.chunks.map((chunk) => {\n    switch (chunk.kind) {\n      case \"text\": {\n        return drizzleSql.raw(chunk.value);\n      }\n      case \"identifier\": {\n        // Drizzle's schema builders treat Name chunks as bare index-column\n        // references and omit dialect quoting. Preserve the portable IR's\n        // identifier semantics by handing the adapter an already-quoted,\n        // trusted SQL token instead.\n        return drizzleSql.raw(`\"${chunk.value.replaceAll('\"', '\"\"')}\"`);\n      }\n      case \"parameter\": {\n        return drizzleSql.param(bindSqlValue(chunk.value, dialect));\n      }\n      case \"placeholder\": {\n        return drizzleSql.placeholder(chunk.value.name);\n      }\n      default: {\n        return throwUnsupportedSqlChunk(chunk);\n      }\n    }\n  });\n  return drizzleSql.join(chunks);\n}\n","import { type SQLWrapper } from \"drizzle-orm\";\nimport {\n  index as pgIndex,\n  type IndexBuilder as PgIndexBuilder,\n  type PgColumn,\n  uniqueIndex as pgUniqueIndex,\n} from \"drizzle-orm/pg-core\";\nimport {\n  index as sqliteIndex,\n  type IndexBuilder as SqliteIndexBuilder,\n  type SQLiteColumn,\n  uniqueIndex as sqliteUniqueIndex,\n} from \"drizzle-orm/sqlite-core\";\n\nimport { toDrizzleSql } from \"../backend/drizzle/execution/types\";\nimport { sql as portableSql, type SqlFragment } from \"../query/sql-fragment\";\nimport {\n  compileEdgeIndexKeys,\n  compileIndexWhere,\n  compileNodeIndexKeys,\n  type IndexCompilationContext,\n} from \"./compiler\";\nimport {\n  SYSTEM_INDEX_DECLARATIONS,\n  type SystemIndexDeclaration,\n  systemIndexName,\n  type SystemIndexTable,\n} from \"./system\";\nimport {\n  type EdgeIndexDeclaration,\n  type IndexDeclaration,\n  type NodeIndexDeclaration,\n  type SystemColumnName,\n} from \"./types\";\n\n// ============================================================\n// PostgreSQL (Drizzle Schema)\n// ============================================================\n\nexport function buildPostgresNodeIndexBuilders(\n  table: NodeIndexTable,\n  indexes: readonly IndexDeclaration[],\n): readonly PgIndexBuilder[] {\n  // GIN-family declarations (method: \"gin\" / \"trigram\") are\n  // materialize-only — like pgvector ANN indexes, they are a pure\n  // materialization concern and never ride the Drizzle table extras.\n  const nodeIndexes = indexes.filter(\n    (index): index is NodeIndexDeclaration =>\n      index.entity === \"node\" && index.method === undefined,\n  );\n\n  return nodeIndexes.map((index) => {\n    const propsColumn = portableSql.identifier(table.props.name);\n    const systemColumn = (column: SystemColumnName): SqlFragment =>\n      portableSql.identifier(getPostgresNodeSystemColumn(table, column).name);\n\n    const { keys } = compileNodeIndexKeys(\n      index,\n      \"postgres\",\n      propsColumn,\n      systemColumn,\n    );\n    assertNonEmpty(keys, `node index \"${index.name}\"`);\n\n    const base = index.unique ? pgUniqueIndex(index.name) : pgIndex(index.name);\n\n    const drizzleKeys = keys.map((key) => toDrizzleSql(key, \"postgres\"));\n    assertNonEmpty(drizzleKeys, `node index \"${index.name}\"`);\n    const [firstKey, ...remainingKeys] = drizzleKeys;\n    const builder = base.on(firstKey, ...remainingKeys);\n\n    if (index.where) {\n      const ctx: IndexCompilationContext = {\n        dialect: \"postgres\",\n        propsColumn,\n        systemColumn,\n      };\n      builder.where(\n        toDrizzleSql(compileIndexWhere(ctx, index.where), \"postgres\"),\n      );\n    }\n\n    return builder;\n  });\n}\n\nexport function buildPostgresEdgeIndexBuilders(\n  table: EdgeIndexTable,\n  indexes: readonly IndexDeclaration[],\n): readonly PgIndexBuilder[] {\n  const edgeIndexes = indexes.filter(\n    (index): index is EdgeIndexDeclaration =>\n      index.entity === \"edge\" && index.method === undefined,\n  );\n\n  return edgeIndexes.map((index) => {\n    const propsColumn = portableSql.identifier(table.props.name);\n    const systemColumn = (column: SystemColumnName): SqlFragment =>\n      portableSql.identifier(getPostgresEdgeSystemColumn(table, column).name);\n\n    const { keys } = compileEdgeIndexKeys(\n      index,\n      \"postgres\",\n      propsColumn,\n      systemColumn,\n    );\n    assertNonEmpty(keys, `edge index \"${index.name}\"`);\n\n    const base = index.unique ? pgUniqueIndex(index.name) : pgIndex(index.name);\n\n    const drizzleKeys = keys.map((key) => toDrizzleSql(key, \"postgres\"));\n    assertNonEmpty(drizzleKeys, `edge index \"${index.name}\"`);\n    const [firstKey, ...remainingKeys] = drizzleKeys;\n    const builder = base.on(firstKey, ...remainingKeys);\n\n    if (index.where) {\n      const ctx: IndexCompilationContext = {\n        dialect: \"postgres\",\n        propsColumn,\n        systemColumn,\n      };\n      builder.where(\n        toDrizzleSql(compileIndexWhere(ctx, index.where), \"postgres\"),\n      );\n    }\n\n    return builder;\n  });\n}\n\nfunction getPostgresNodeSystemColumn(\n  table: NodeIndexTable,\n  column: SystemColumnName,\n): NamedSqlWrapper {\n  switch (column) {\n    case \"graph_id\": {\n      return table.graphId;\n    }\n    case \"kind\": {\n      return table.kind;\n    }\n    case \"id\": {\n      return table.id;\n    }\n    case \"from_kind\":\n    case \"from_id\":\n    case \"to_kind\":\n    case \"to_id\": {\n      throw new Error(`Unsupported node system column for indexes: ${column}`);\n    }\n    case \"deleted_at\": {\n      return table.deletedAt;\n    }\n    case \"valid_from\": {\n      return table.validFrom;\n    }\n    case \"valid_to\": {\n      return table.validTo;\n    }\n    case \"created_at\": {\n      return table.createdAt;\n    }\n    case \"updated_at\": {\n      return table.updatedAt;\n    }\n    case \"version\": {\n      return table.version;\n    }\n  }\n}\n\nfunction getPostgresEdgeSystemColumn(\n  table: EdgeIndexTable,\n  column: SystemColumnName,\n): NamedSqlWrapper {\n  switch (column) {\n    case \"graph_id\": {\n      return table.graphId;\n    }\n    case \"kind\": {\n      return table.kind;\n    }\n    case \"id\": {\n      return table.id;\n    }\n    case \"from_kind\": {\n      return table.fromKind;\n    }\n    case \"from_id\": {\n      return table.fromId;\n    }\n    case \"to_kind\": {\n      return table.toKind;\n    }\n    case \"to_id\": {\n      return table.toId;\n    }\n    case \"deleted_at\": {\n      return table.deletedAt;\n    }\n    case \"valid_from\": {\n      return table.validFrom;\n    }\n    case \"valid_to\": {\n      return table.validTo;\n    }\n    case \"created_at\": {\n      return table.createdAt;\n    }\n    case \"updated_at\": {\n      return table.updatedAt;\n    }\n    case \"version\": {\n      throw new Error(`Unsupported edge system column for indexes: ${column}`);\n    }\n  }\n}\n\n// ============================================================\n// SQLite (Drizzle Schema)\n// ============================================================\n\nexport function buildSqliteNodeIndexBuilders(\n  table: NodeIndexTable,\n  indexes: readonly IndexDeclaration[],\n): readonly SqliteIndexBuilder[] {\n  // GIN-family declarations (method: \"gin\" / \"trigram\") are\n  // materialize-only — like pgvector ANN indexes, they are a pure\n  // materialization concern and never ride the Drizzle table extras.\n  const nodeIndexes = indexes.filter(\n    (index): index is NodeIndexDeclaration =>\n      index.entity === \"node\" && index.method === undefined,\n  );\n\n  return nodeIndexes.map((index) => {\n    const propsColumn = portableSql.identifier(table.props.name);\n    const systemColumn = (column: SystemColumnName): SqlFragment =>\n      portableSql.identifier(getSqliteNodeSystemColumn(table, column).name);\n\n    const { keys } = compileNodeIndexKeys(\n      index,\n      \"sqlite\",\n      propsColumn,\n      systemColumn,\n    );\n    assertNonEmpty(keys, `node index \"${index.name}\"`);\n\n    const base =\n      index.unique ? sqliteUniqueIndex(index.name) : sqliteIndex(index.name);\n\n    const drizzleKeys = keys.map((key) => toDrizzleSql(key, \"sqlite\"));\n    assertNonEmpty(drizzleKeys, `node index \"${index.name}\"`);\n    const [firstKey, ...remainingKeys] = drizzleKeys;\n    const builder = base.on(firstKey, ...remainingKeys);\n\n    if (index.where) {\n      const ctx: IndexCompilationContext = {\n        dialect: \"sqlite\",\n        propsColumn,\n        systemColumn,\n      };\n      builder.where(\n        toDrizzleSql(compileIndexWhere(ctx, index.where), \"sqlite\"),\n      );\n    }\n\n    return builder;\n  });\n}\n\nexport function buildSqliteEdgeIndexBuilders(\n  table: EdgeIndexTable,\n  indexes: readonly IndexDeclaration[],\n): readonly SqliteIndexBuilder[] {\n  const edgeIndexes = indexes.filter(\n    (index): index is EdgeIndexDeclaration =>\n      index.entity === \"edge\" && index.method === undefined,\n  );\n\n  return edgeIndexes.map((index) => {\n    const propsColumn = portableSql.identifier(table.props.name);\n    const systemColumn = (column: SystemColumnName): SqlFragment =>\n      portableSql.identifier(getSqliteEdgeSystemColumn(table, column).name);\n\n    const { keys } = compileEdgeIndexKeys(\n      index,\n      \"sqlite\",\n      propsColumn,\n      systemColumn,\n    );\n    assertNonEmpty(keys, `edge index \"${index.name}\"`);\n\n    const base =\n      index.unique ? sqliteUniqueIndex(index.name) : sqliteIndex(index.name);\n\n    const drizzleKeys = keys.map((key) => toDrizzleSql(key, \"sqlite\"));\n    assertNonEmpty(drizzleKeys, `edge index \"${index.name}\"`);\n    const [firstKey, ...remainingKeys] = drizzleKeys;\n    const builder = base.on(firstKey, ...remainingKeys);\n\n    if (index.where) {\n      const ctx: IndexCompilationContext = {\n        dialect: \"sqlite\",\n        propsColumn,\n        systemColumn,\n      };\n      builder.where(\n        toDrizzleSql(compileIndexWhere(ctx, index.where), \"sqlite\"),\n      );\n    }\n\n    return builder;\n  });\n}\n\nfunction getSqliteNodeSystemColumn(\n  table: NodeIndexTable,\n  column: SystemColumnName,\n): NamedSqlWrapper {\n  switch (column) {\n    case \"graph_id\": {\n      return table.graphId;\n    }\n    case \"kind\": {\n      return table.kind;\n    }\n    case \"id\": {\n      return table.id;\n    }\n    case \"from_kind\":\n    case \"from_id\":\n    case \"to_kind\":\n    case \"to_id\": {\n      throw new Error(`Unsupported node system column for indexes: ${column}`);\n    }\n    case \"deleted_at\": {\n      return table.deletedAt;\n    }\n    case \"valid_from\": {\n      return table.validFrom;\n    }\n    case \"valid_to\": {\n      return table.validTo;\n    }\n    case \"created_at\": {\n      return table.createdAt;\n    }\n    case \"updated_at\": {\n      return table.updatedAt;\n    }\n    case \"version\": {\n      return table.version;\n    }\n  }\n}\n\nfunction getSqliteEdgeSystemColumn(\n  table: EdgeIndexTable,\n  column: SystemColumnName,\n): NamedSqlWrapper {\n  switch (column) {\n    case \"graph_id\": {\n      return table.graphId;\n    }\n    case \"kind\": {\n      return table.kind;\n    }\n    case \"id\": {\n      return table.id;\n    }\n    case \"from_kind\": {\n      return table.fromKind;\n    }\n    case \"from_id\": {\n      return table.fromId;\n    }\n    case \"to_kind\": {\n      return table.toKind;\n    }\n    case \"to_id\": {\n      return table.toId;\n    }\n    case \"deleted_at\": {\n      return table.deletedAt;\n    }\n    case \"valid_from\": {\n      return table.validFrom;\n    }\n    case \"valid_to\": {\n      return table.validTo;\n    }\n    case \"created_at\": {\n      return table.createdAt;\n    }\n    case \"updated_at\": {\n      return table.updatedAt;\n    }\n    case \"version\": {\n      throw new Error(`Unsupported edge system column for indexes: ${column}`);\n    }\n  }\n}\n\n// ============================================================\n// System indexes (both dialects)\n// ============================================================\n//\n// The schema factories derive their system-index Drizzle builders from\n// `SYSTEM_INDEX_DECLARATIONS` so both dialects emit the same index set by\n// construction. The builders receive the table's real column objects (not\n// SQL wrappers) so the DDL generator renders plain quoted column names —\n// byte-identical to the runtime DDL `materializeSystemIndexes` emits.\n\ntype SystemIndexColumns<C extends { name: string }> = Readonly<\n  Record<string, C>\n>;\n\n/**\n * Resolves a declaration's physical column names against the table's own\n * column objects by each column's `.name` — the SQL name Drizzle carries on\n * the column itself — so no naming convention sits between the declaration\n * and the schema. A column the table doesn't define throws at\n * table-construction time (exercised by the system-index parity tests).\n */\nfunction resolveSystemIndexColumns<C extends { name: string }>(\n  declaration: SystemIndexDeclaration,\n  columns: SystemIndexColumns<C>,\n): readonly [C, ...C[]] {\n  const byPhysicalName = new Map(\n    Object.values(columns).map((column) => [column.name, column]),\n  );\n  const resolved = declaration.columns.map((column) => {\n    const value = byPhysicalName.get(column);\n    if (value === undefined) {\n      throw new Error(\n        `System index \"${declaration.table}_${declaration.suffix}\" references ` +\n          `a column \"${column}\" the ${declaration.table} table does not define`,\n      );\n    }\n    return value;\n  });\n  // `declaration.columns` is non-empty by type, so `resolved` is too.\n  return resolved as [C, ...C[]];\n}\n\n/**\n * The two dialect variants do no dialect-specific work (no unique, no\n * where, no expression compilation — unlike the node/edge builder pairs\n * above), so they share one body parameterized by the dialect's index\n * factory.\n */\nfunction buildSystemIndexBuilders<C extends { name: string }, B>(\n  tableKey: SystemIndexTable,\n  physicalTableName: string,\n  columns: SystemIndexColumns<C>,\n  indexFactory: (name: string) => { on: (...cols: [C, ...C[]]) => B },\n): readonly B[] {\n  return SYSTEM_INDEX_DECLARATIONS.filter(\n    (declaration) => declaration.table === tableKey,\n  ).map((declaration) =>\n    indexFactory(systemIndexName(physicalTableName, declaration.suffix)).on(\n      ...resolveSystemIndexColumns(declaration, columns),\n    ),\n  );\n}\n\nexport function buildSqliteSystemIndexBuilders(\n  tableKey: SystemIndexTable,\n  physicalTableName: string,\n  columns: SystemIndexColumns<SQLiteColumn>,\n): readonly SqliteIndexBuilder[] {\n  return buildSystemIndexBuilders(\n    tableKey,\n    physicalTableName,\n    columns,\n    (name) => sqliteIndex(name),\n  );\n}\n\nexport function buildPostgresSystemIndexBuilders(\n  tableKey: SystemIndexTable,\n  physicalTableName: string,\n  columns: SystemIndexColumns<PgColumn>,\n): readonly PgIndexBuilder[] {\n  return buildSystemIndexBuilders(\n    tableKey,\n    physicalTableName,\n    columns,\n    (name) => pgIndex(name),\n  );\n}\n\n// ============================================================\n// Minimal table shapes (shared between dialect schemas)\n// ============================================================\n\ntype NamedSqlWrapper = SQLWrapper & Readonly<{ name: string }>;\n\ntype NodeIndexTable = Readonly<{\n  graphId: NamedSqlWrapper;\n  kind: NamedSqlWrapper;\n  id: NamedSqlWrapper;\n  props: NamedSqlWrapper;\n  version: NamedSqlWrapper;\n  validFrom: NamedSqlWrapper;\n  validTo: NamedSqlWrapper;\n  createdAt: NamedSqlWrapper;\n  updatedAt: NamedSqlWrapper;\n  deletedAt: NamedSqlWrapper;\n}>;\n\ntype EdgeIndexTable = Readonly<{\n  graphId: NamedSqlWrapper;\n  id: NamedSqlWrapper;\n  kind: NamedSqlWrapper;\n  fromKind: NamedSqlWrapper;\n  fromId: NamedSqlWrapper;\n  toKind: NamedSqlWrapper;\n  toId: NamedSqlWrapper;\n  props: NamedSqlWrapper;\n  validFrom: NamedSqlWrapper;\n  validTo: NamedSqlWrapper;\n  createdAt: NamedSqlWrapper;\n  updatedAt: NamedSqlWrapper;\n  deletedAt: NamedSqlWrapper;\n}>;\n\nfunction assertNonEmpty<T>(\n  values: readonly T[],\n  label: string,\n): asserts values is readonly [T, ...T[]] {\n  if (values.length === 0) {\n    throw new Error(`Index must have at least one key (${label})`);\n  }\n}\n"]}