{"version":3,"file":"dialect.mjs","sources":["../../src/dialects/dialect.ts"],"sourcesContent":["import type { Database } from '..';\nimport type { ForeignKey, Index, Schema } from '../schema';\n\nexport interface SchemaInspector {\n  getSchema(): Promise<Schema>;\n  getIndexes(tableName: string): Promise<Index[]>;\n  getForeignKeys(tableName: string): Promise<ForeignKey[]>;\n  getTables(): Promise<string[]>;\n}\n\nexport default class Dialect {\n  db: Database;\n\n  schemaInspector: SchemaInspector = {} as SchemaInspector;\n\n  client: string;\n\n  constructor(db: Database, client: string) {\n    this.db = db;\n    this.client = client;\n  }\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  configure(conn?: any) {}\n\n  // eslint-disable-next-line @typescript-eslint/no-unused-vars\n  async initialize(_nativeConnection?: unknown) {\n    // noop\n  }\n\n  getTables() {\n    throw new Error('getTables not implemented for this dialect');\n  }\n\n  getSqlType(type: unknown) {\n    return type;\n  }\n\n  canAlterConstraints() {\n    return true;\n  }\n\n  usesForeignKeys() {\n    return false;\n  }\n\n  useReturning() {\n    return false;\n  }\n\n  supportsUnsigned() {\n    return false;\n  }\n\n  supportsOperator(operator?: string): boolean;\n  supportsOperator(): boolean {\n    return true;\n  }\n\n  async startSchemaUpdate() {\n    // noop\n  }\n\n  async endSchemaUpdate() {\n    // noop\n  }\n\n  transformErrors(error: Error | { message: string }) {\n    if (error instanceof Error) {\n      throw error;\n    }\n\n    throw new Error(error.message);\n  }\n\n  canAddIncrements() {\n    return true;\n  }\n\n  /**\n   * Max rows per batch for bulk inserts.\n   * Some databases limit multi-row insert size; override in dialect when a lower limit is required.\n   */\n  getBatchInsertSize(): number {\n    return 1000;\n  }\n\n  /**\n   * Get column type conversion SQL for complex type changes\n   * Override in specific dialects to handle database-specific conversions\n   * @param currentType - The current database data type\n   * @param targetType - The target Strapi type\n   * @returns Conversion SQL details or null if no special handling needed\n   */\n  getColumnTypeConversionSQL(\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    currentType: string,\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\n    targetType: string\n  ): { sql: string; typeClause: string; warning?: string } | null {\n    return null;\n  }\n}\n"],"names":["Dialect","configure","conn","initialize","_nativeConnection","getTables","Error","getSqlType","type","canAlterConstraints","usesForeignKeys","useReturning","supportsUnsigned","supportsOperator","startSchemaUpdate","endSchemaUpdate","transformErrors","error","message","canAddIncrements","getBatchInsertSize","getColumnTypeConversionSQL","currentType","targetType","db","client","schemaInspector"],"mappings":"AAUe,MAAMA,OAAAA,CAAAA;;IAanBC,SAAAA,CAAUC,IAAU,EAAE,CAAC;;IAGvB,MAAMC,UAAAA,CAAWC,iBAA2B,EAAE;;AAE9C,IAAA;IAEAC,SAAAA,GAAY;AACV,QAAA,MAAM,IAAIC,KAAAA,CAAM,4CAAA,CAAA;AAClB,IAAA;AAEAC,IAAAA,UAAAA,CAAWC,IAAa,EAAE;QACxB,OAAOA,IAAAA;AACT,IAAA;IAEAC,mBAAAA,GAAsB;QACpB,OAAO,IAAA;AACT,IAAA;IAEAC,eAAAA,GAAkB;QAChB,OAAO,KAAA;AACT,IAAA;IAEAC,YAAAA,GAAe;QACb,OAAO,KAAA;AACT,IAAA;IAEAC,gBAAAA,GAAmB;QACjB,OAAO,KAAA;AACT,IAAA;IAGAC,gBAAAA,GAA4B;QAC1B,OAAO,IAAA;AACT,IAAA;AAEA,IAAA,MAAMC,iBAAAA,GAAoB;;AAE1B,IAAA;AAEA,IAAA,MAAMC,eAAAA,GAAkB;;AAExB,IAAA;AAEAC,IAAAA,eAAAA,CAAgBC,KAAkC,EAAE;AAClD,QAAA,IAAIA,iBAAiBX,KAAAA,EAAO;YAC1B,MAAMW,KAAAA;AACR,QAAA;QAEA,MAAM,IAAIX,KAAAA,CAAMW,KAAAA,CAAMC,OAAO,CAAA;AAC/B,IAAA;IAEAC,gBAAAA,GAAmB;QACjB,OAAO,IAAA;AACT,IAAA;AAEA;;;AAGC,MACDC,kBAAAA,GAA6B;QAC3B,OAAO,IAAA;AACT,IAAA;AAEA;;;;;;AAMC,MACDC;AAEEC,IAAAA,WAAmB;AAEnBC,IAAAA,UAAkB,EAC4C;QAC9D,OAAO,IAAA;AACT,IAAA;IApFA,WAAA,CAAYC,EAAY,EAAEC,MAAc,CAAE;AAJ1CC,QAAAA,IAAAA,CAAAA,eAAAA,GAAmC,EAAC;QAKlC,IAAI,CAACF,EAAE,GAAGA,EAAAA;QACV,IAAI,CAACC,MAAM,GAAGA,MAAAA;AAChB,IAAA;AAkFF;;;;"}