{"version":3,"file":"insert.cjs","names":["MySqlInsertBase","entityKind","extractUsedTable"],"sources":["../../../src/mysql-core/effect/insert.ts"],"sourcesContent":["import type * as Effect from 'effect/Effect';\nimport { applyEffectWrapper, type QueryEffectHKTBase } from '~/effect-core/query-effect.ts';\nimport { entityKind } from '~/entity.ts';\nimport { MySqlInsertBase, type MySqlInsertHKTBase } from '~/mysql-core/query-builders/insert.ts';\nimport type { MySqlPreparedQueryConfig, MySqlQueryResultHKT, MySqlQueryResultKind } from '~/mysql-core/session.ts';\nimport type { MySqlTable } from '~/mysql-core/table.ts';\nimport type { RunnableQuery } from '~/runnable-query.ts';\nimport type { Assume } from '~/utils.ts';\nimport { extractUsedTable } from '../utils.ts';\nimport type { MySqlEffectPreparedQuery, MySqlEffectSession } from './session.ts';\n\nexport interface MySqlEffectInsertHKT<TEffectHKT extends QueryEffectHKTBase = QueryEffectHKTBase>\n\textends MySqlInsertHKTBase\n{\n\t_type: MySqlEffectInsertBase<\n\t\tAssume<this['table'], MySqlTable>,\n\t\tAssume<this['queryResult'], MySqlQueryResultHKT>,\n\t\tAssume<this['returning'], Record<string, unknown> | undefined>,\n\t\tthis['dynamic'],\n\t\tthis['excludedMethods'],\n\t\tTEffectHKT\n\t>;\n}\n\nexport type AnyMySqlEffectInsert = MySqlEffectInsertBase<any, any, any, any, any>;\n\nexport type MySqlEffectInsertPrepare<\n\tT extends AnyMySqlEffectInsert,\n\tTReturning extends Record<string, unknown> | undefined = undefined,\n\tTEffectHKT extends QueryEffectHKTBase = QueryEffectHKTBase,\n> = MySqlEffectPreparedQuery<\n\tMySqlPreparedQueryConfig & {\n\t\texecute: TReturning extends undefined ? MySqlQueryResultKind<T['_']['queryResult'], never> : TReturning[];\n\t\titerator: never;\n\t},\n\tTEffectHKT\n>;\n\nexport type MySqlEffectInsert<\n\tTTable extends MySqlTable = MySqlTable,\n\tTQueryResult extends MySqlQueryResultHKT = MySqlQueryResultHKT,\n\tTReturning extends Record<string, unknown> | undefined = Record<string, unknown> | undefined,\n\tTEffectHKT extends QueryEffectHKTBase = QueryEffectHKTBase,\n> = MySqlEffectInsertBase<TTable, TQueryResult, TReturning, true, never, TEffectHKT>;\n\nexport interface MySqlEffectInsertBase<\n\t// eslint-disable-next-line @typescript-eslint/no-unused-vars\n\tTTable extends MySqlTable,\n\tTQueryResult extends MySqlQueryResultHKT,\n\tTReturning extends Record<string, unknown> | undefined = 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\tTEffectHKT extends QueryEffectHKTBase = QueryEffectHKTBase,\n> extends\n\tEffect.Effect<\n\t\tTReturning extends undefined ? MySqlQueryResultKind<TQueryResult, never> : TReturning[],\n\t\tTEffectHKT['error'],\n\t\tTEffectHKT['context']\n\t>\n{}\n\nexport class MySqlEffectInsertBase<\n\tTTable extends MySqlTable,\n\tTQueryResult extends MySqlQueryResultHKT,\n\tTReturning extends Record<string, unknown> | undefined = undefined,\n\tTDynamic extends boolean = false,\n\tTExcludedMethods extends string = never,\n\tTEffectHKT extends QueryEffectHKTBase = QueryEffectHKTBase,\n> extends MySqlInsertBase<\n\tMySqlEffectInsertHKT<TEffectHKT>,\n\tTTable,\n\tTQueryResult,\n\tTReturning,\n\tTDynamic,\n\tTExcludedMethods\n> implements\n\tRunnableQuery<TReturning extends undefined ? MySqlQueryResultKind<TQueryResult, never> : TReturning[], 'mysql'>\n{\n\tstatic override readonly [entityKind]: string = 'MySqlEffectInsert';\n\n\tdeclare protected session: MySqlEffectSession<TEffectHKT, TQueryResult, any>;\n\n\t/** @internal */\n\t_prepare(): MySqlEffectInsertPrepare<this, TReturning, TEffectHKT> {\n\t\tconst { sql, generatedIds } = this.dialect.buildInsertQuery(this.config);\n\t\treturn this.session.prepareQuery(\n\t\t\tthis.dialect.sqlToQuery(sql),\n\t\t\t'raw',\n\t\t\tthis.dialect.mapperGenerators.$returning(this.config.returning, generatedIds),\n\t\t\t{\n\t\t\t\ttype: 'insert',\n\t\t\t\ttables: extractUsedTable(this.config.table),\n\t\t\t},\n\t\t) as MySqlEffectInsertPrepare<this, TReturning, TEffectHKT>;\n\t}\n\n\tprepare(): MySqlEffectInsertPrepare<this, TReturning, TEffectHKT> {\n\t\treturn this._prepare();\n\t}\n\n\texecute: ReturnType<this['prepare']>['execute'] = (placeholderValues) => {\n\t\treturn this.prepare().execute(placeholderValues);\n\t};\n}\n\napplyEffectWrapper(MySqlEffectInsertBase);\n"],"mappings":";;;;;;;;AA+DA,IAAa,wBAAb,cAOUA,sDASV;CACC,QAA0BC,0BAAsB;;CAKhD,WAAmE;EAClE,MAAM,EAAE,KAAK,iBAAiB,KAAK,QAAQ,iBAAiB,KAAK,OAAO;AACxE,SAAO,KAAK,QAAQ,aACnB,KAAK,QAAQ,WAAW,IAAI,EAC5B,OACA,KAAK,QAAQ,iBAAiB,WAAW,KAAK,OAAO,WAAW,aAAa,EAC7E;GACC,MAAM;GACN,QAAQC,0CAAiB,KAAK,OAAO,MAAM;GAC3C,CACD;;CAGF,UAAkE;AACjE,SAAO,KAAK,UAAU;;CAGvB,WAAmD,sBAAsB;AACxE,SAAO,KAAK,SAAS,CAAC,QAAQ,kBAAkB;;;sDAI/B,sBAAsB"}