{"version":3,"file":"insert.cjs","names":["PgInsertBase","entityKind","tracer","extractUsedTable","QueryPromise"],"sources":["../../../src/pg-core/async/insert.ts"],"sourcesContent":["import { entityKind } from '~/entity.ts';\nimport type { PgQueryResultHKT, PgQueryResultKind, PreparedQueryConfig } from '~/pg-core/session.ts';\nimport type { PgTable } from '~/pg-core/table.ts';\nimport { QueryPromise } from '~/query-promise.ts';\nimport type { RunnableQuery } from '~/runnable-query.ts';\nimport type { ColumnsSelection } from '~/sql/sql.ts';\nimport { tracer } from '~/tracing.ts';\nimport { applyMixins, type Assume } from '~/utils.ts';\nimport type { PgInsertHKTBase } from '../query-builders/insert.ts';\nimport { PgInsertBase } from '../query-builders/insert.ts';\nimport { extractUsedTable } from '../utils.ts';\nimport type { PgAsyncPreparedQuery, PgAsyncSession } from './session.ts';\n\nexport interface PgAsyncInsertHKT extends PgInsertHKTBase {\n\t_type: PgAsyncInsertBase<\n\t\tAssume<this['table'], PgTable>,\n\t\tAssume<this['queryResult'], PgQueryResultHKT>,\n\t\tthis['selectedFields'],\n\t\tthis['returning'],\n\t\tthis['dynamic'],\n\t\tthis['excludedMethods']\n\t>;\n}\n\nexport type AnyPgAsyncInsert = PgAsyncInsertBase<any, any, any, any, any, any>;\n\nexport type PgInsertPrepare<T extends AnyPgAsyncInsert> = PgAsyncPreparedQuery<\n\tPreparedQueryConfig & {\n\t\texecute: T['_']['result'];\n\t}\n>;\n\nexport type PgAsyncInsert<\n\tTTable extends PgTable = PgTable,\n\tTQueryResult extends PgQueryResultHKT = PgQueryResultHKT,\n\tTSelectedFields extends ColumnsSelection | undefined = ColumnsSelection | undefined,\n\tTReturning extends Record<string, unknown> | undefined = Record<string, unknown> | undefined,\n> = PgAsyncInsertBase<TTable, TQueryResult, TSelectedFields, TReturning, true, never>;\n\nexport interface PgAsyncInsertBase<\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTTable extends PgTable,\n\tTQueryResult extends PgQueryResultHKT,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTSelectedFields = undefined,\n\tTReturning = undefined,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTDynamic extends boolean = false,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTExcludedMethods extends string = never,\n> extends QueryPromise<TReturning extends undefined ? PgQueryResultKind<TQueryResult, never> : TReturning[]> {\n}\n\nexport class PgAsyncInsertBase<\n\tTTable extends PgTable,\n\tTQueryResult extends PgQueryResultHKT,\n\tTSelectedFields = undefined,\n\tTReturning = undefined,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTDynamic extends boolean = false,\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTExcludedMethods extends string = never,\n> extends PgInsertBase<\n\tPgAsyncInsertHKT,\n\tTTable,\n\tTQueryResult,\n\tTSelectedFields,\n\tTReturning,\n\tTDynamic,\n\tTExcludedMethods\n> implements RunnableQuery<TReturning extends undefined ? PgQueryResultKind<TQueryResult, never> : TReturning[], 'pg'> {\n\tstatic override readonly [entityKind]: string = 'PgAsyncInsert';\n\n\tdeclare protected session: PgAsyncSession;\n\n\t/** @internal */\n\t_prepare(name?: string, generateName = false): PgInsertPrepare<this> {\n\t\tconst { session, config, dialect } = this;\n\t\tconst { returning: fields } = config;\n\n\t\treturn tracer.startActiveSpan('drizzle.prepareQuery', () => {\n\t\t\tconst shape = fields\n\t\t\t\t? config.shape ??= dialect.shapeGenerator?.({ type: 'plain', fields }, undefined)\n\t\t\t\t: undefined;\n\n\t\t\tconst query = dialect.sqlToQuery(this.getSQL());\n\t\t\tconst mapper = shape || !fields\n\t\t\t\t? undefined\n\t\t\t\t: this.dialect.mapperGenerators.rows(fields, undefined);\n\n\t\t\tconst preparedQuery = session.prepareQuery<PreparedQueryConfig & { execute: any }>(\n\t\t\t\tquery,\n\t\t\t\tshape ? 'objects' : fields ? 'arrays' : 'raw',\n\t\t\t\tname ?? generateName,\n\t\t\t\tmapper,\n\t\t\t\t{ type: 'insert', tables: [...extractUsedTable(this.config.table)] },\n\t\t\t\tundefined,\n\t\t\t\tshape,\n\t\t\t);\n\n\t\t\treturn preparedQuery;\n\t\t});\n\t}\n\n\tprepare(name?: string): PgInsertPrepare<this> {\n\t\treturn this._prepare(name, true);\n\t}\n\n\texecute: ReturnType<this['prepare']>['execute'] = (placeholderValues) => {\n\t\treturn tracer.startActiveSpan('drizzle.operation', () => {\n\t\t\treturn this._prepare().execute(placeholderValues);\n\t\t});\n\t};\n}\n\napplyMixins(PgAsyncInsertBase, [QueryPromise]);\n"],"mappings":";;;;;;;;;;AAqDA,IAAa,oBAAb,cASUA,mDAQ6G;CACtH,QAA0BC,0BAAsB;;CAKhD,SAAS,MAAe,eAAe,OAA8B;EACpE,MAAM,EAAE,SAAS,QAAQ,YAAY;EACrC,MAAM,EAAE,WAAW,WAAW;AAE9B,SAAOC,oBAAO,gBAAgB,8BAA8B;GAC3D,MAAM,QAAQ,SACX,OAAO,UAAU,QAAQ,iBAAiB;IAAE,MAAM;IAAS;IAAQ,EAAE,OAAU,GAC/E;GAEH,MAAM,QAAQ,QAAQ,WAAW,KAAK,QAAQ,CAAC;GAC/C,MAAM,SAAS,SAAS,CAAC,SACtB,SACA,KAAK,QAAQ,iBAAiB,KAAK,QAAQ,OAAU;AAYxD,UAVsB,QAAQ,aAC7B,OACA,QAAQ,YAAY,SAAS,WAAW,OACxC,QAAQ,cACR,QACA;IAAE,MAAM;IAAU,QAAQ,CAAC,GAAGC,uCAAiB,KAAK,OAAO,MAAM,CAAC;IAAE,EACpE,QACA,MACA;IAGA;;CAGH,QAAQ,MAAsC;AAC7C,SAAO,KAAK,SAAS,MAAM,KAAK;;CAGjC,WAAmD,sBAAsB;AACxE,SAAOD,oBAAO,gBAAgB,2BAA2B;AACxD,UAAO,KAAK,UAAU,CAAC,QAAQ,kBAAkB;IAChD;;;4BAIQ,mBAAmB,CAACE,gCAAa,CAAC"}