{"version":3,"sources":["/home/runner/work/rivet/rivet/rivetkit-typescript/packages/db/dist/drizzle/mod.cjs","../../src/drizzle/mod.ts"],"names":["client"],"mappings":"AAAA;ACAA,6GAAqB;AACrB;AAEC;AAAW,4DACL;AACP,2DAA0C;AAC1C,+DAA0C;AAG1C,qFAAc;AAEd,yCAAkE;AAG3D,SAAS,YAAA,CACf,MAAA,EACS;AAGT,EAAA,OAAO,sCAAA;AAAqB,IAC3B,OAAA,EAAS,QAAA;AAAA,IACT,MAAA,EAAQ,gBAAA;AAAA,IACR,GAAG;AAAA,EACJ,CAAC,CAAA;AACF;AAYO,SAAS,EAAA,CAGf,MAAA,EAC+D;AAC/D,EAAA,OAAO;AAAA,IACN,YAAA,EAAc,MAAA,CAAO,GAAA,EAAA,GAAQ;AAE5B,MAAA,GAAA,CAAI,CAAC,GAAA,CAAI,WAAA,EAAa;AACrB,QAAA,MAAM,IAAI,KAAA;AAAA,UACT;AAAA,QACD,CAAA;AAAA,MACD;AAEA,MAAA,MAAM,KAAA,EAAO,MAAM,GAAA,CAAI,WAAA,CAAY,CAAA;AAEnC,MAAA,GAAA,CAAI,CAAC,IAAA,EAAM;AACV,QAAA,MAAM,IAAI,KAAA;AAAA,UACT;AAAA,QACD,CAAA;AAAA,MACD;AAEA,MAAA,GAAA,CAAI,YAAA,CAAa,IAAI,CAAA,EAAG;AAGvB,QAAA,MAAMA,QAAAA,EAAS,oCAAA;AAAA,UACd,IAAA;AAAA,UACA;AAAA,QACD,CAAA;AACA,QAAA,OAAO,MAAA,CAAO,MAAA,CAAOA,OAAAA,EAAQ;AAAA;AAAA,UAE5B,OAAA,EAAS,MAAA,CAAO,KAAA,EAAA,GAAU,IAAA,EAAA,GACzBA,OAAAA,CAAO,OAAA,CAAQ,IAAA,CAAK,KAAA,EAAO,GAAG,IAAI;AAAA,QACpC,CAAqB,CAAA;AAAA,MACtB;AAGA,MAAA,MAAM,OAAA,EAAS,qCAAA;AAAc,QAC5B,MAAA,EAAQ,IAAI,4BAAA,CAAS,IAAc,CAAA;AAAA,QACnC,GAAG;AAAA,MACJ,CAAC,CAAA;AAED,MAAA,OAAO,MAAA,CAAO,MAAA,CAAO,MAAA,EAAQ;AAAA,QAC5B,OAAA,EAAS,MAAA,CAAO,KAAA,EAAA,GAAU,IAAA,EAAA,GACzB,MAAA,CAAO,OAAA,CAAQ,OAAA,CAAQ,KAAK,CAAA,CAAE,GAAA,CAAI,GAAG,IAAI;AAAA,MAC3C,CAAqB,CAAA;AAAA,IACtB,CAAA;AAAA,IACA,SAAA,EAAW,MAAA,CAAO,MAAA,EAAA,GAAW;AAE5B,MAAA,GAAA,CAAI,OAAA,GAAA,KAAA,EAAA,KAAA,EAAA,EAAA,MAAA,CAAQ,UAAA,EAAY;AACvB,QAAA,MAAM,+BAAA,MAAe,EAAQ,OAAA,GAAA,KAAA,EAAA,KAAA,EAAA,EAAA,MAAA,CAAQ,UAAU,CAAA;AAAA,MAChD;AAAA,IACD;AAAA,EACD,CAAA;AACD;AAEA,SAAS,YAAA,CAAa,IAAA,EAAmC;AACxD,EAAA,OACC,OAAO,KAAA,IAAS,SAAA,GAChB,KAAA,IAAS,KAAA,GACT,OAAA,GAAU,KAAA,GACV,OAAQ,IAAA,CAAa,KAAA,IAAS,UAAA;AAEhC;ADzCA;AACE;AACA;AACF,qDAAC","file":"/home/runner/work/rivet/rivet/rivetkit-typescript/packages/db/dist/drizzle/mod.cjs","sourcesContent":[null,"import Database from \"better-sqlite3\";\nimport {\n\ttype BetterSQLite3Database,\n\tdrizzle as sqliteDrizzle,\n} from \"drizzle-orm/better-sqlite3\";\nimport { drizzle as durableDrizzle } from \"drizzle-orm/durable-sqlite\";\nimport { migrate as durableMigrate } from \"drizzle-orm/durable-sqlite/migrator\";\nimport type { DatabaseProvider, RawAccess } from \"@/config\";\n\nexport * from \"drizzle-orm/sqlite-core\";\n\nimport { type Config, defineConfig as originalDefineConfig } from \"drizzle-kit\";\nimport type { SQLiteShim } from \"@/utils\";\n\nexport function defineConfig(\n\tconfig: Partial<Config & { driver: \"durable-sqlite\" }>,\n): Config {\n\t// This is a workaround to avoid the \"drizzle-kit\" import issue in the examples.\n\t// It allows us to use the same defineConfig function in both the main package and the examples.\n\treturn originalDefineConfig({\n\t\tdialect: \"sqlite\",\n\t\tdriver: \"durable-sqlite\",\n\t\t...config,\n\t});\n}\n\ninterface DatabaseFactoryConfig<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n> {\n\t/**\n\t * The database schema.\n\t */\n\tschema?: TSchema;\n\tmigrations?: any;\n}\n\nexport function db<\n\tTSchema extends Record<string, unknown> = Record<string, never>,\n>(\n\tconfig?: DatabaseFactoryConfig<TSchema>,\n): DatabaseProvider<BetterSQLite3Database<TSchema> & RawAccess> {\n\treturn {\n\t\tcreateClient: async (ctx) => {\n\t\t\t// Create a database connection using the provided context\n\t\t\tif (!ctx.getDatabase) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"createDatabase method is not available in context.\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst conn = await ctx.getDatabase();\n\n\t\t\tif (!conn) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t\"Cannot create database connection, or database feature is not enabled.\",\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (isSQLiteShim(conn)) {\n\t\t\t\t// If the connection is already an object with exec method, return it\n\t\t\t\t// i.e. in serverless environments (Cloudflare Workers)\n\t\t\t\tconst client = durableDrizzle<TSchema, SQLiteShim>(\n\t\t\t\t\tconn,\n\t\t\t\t\tconfig,\n\t\t\t\t);\n\t\t\t\treturn Object.assign(client, {\n\t\t\t\t\t// client.$client.exec is the underlying SQLite client\n\t\t\t\t\texecute: async (query, ...args) =>\n\t\t\t\t\t\tclient.$client.exec(query, ...args),\n\t\t\t\t} satisfies RawAccess);\n\t\t\t}\n\n\t\t\t// Create a database client using the connection\n\t\t\tconst client = sqliteDrizzle({\n\t\t\t\tclient: new Database(conn as string),\n\t\t\t\t...config,\n\t\t\t});\n\n\t\t\treturn Object.assign(client, {\n\t\t\t\texecute: async (query, ...args) =>\n\t\t\t\t\tclient.$client.prepare(query).all(...args),\n\t\t\t} satisfies RawAccess);\n\t\t},\n\t\tonMigrate: async (client) => {\n\t\t\t// Run migrations if provided in the config\n\t\t\tif (config?.migrations) {\n\t\t\t\tawait durableMigrate(client, config?.migrations);\n\t\t\t}\n\t\t},\n\t};\n}\n\nfunction isSQLiteShim(conn: unknown): conn is SQLiteShim {\n\treturn (\n\t\ttypeof conn === \"object\" &&\n\t\tconn !== null &&\n\t\t\"exec\" in conn &&\n\t\ttypeof (conn as any).exec === \"function\"\n\t);\n}\n"]}