( imports: Record<string, unknown>, drizzleInstance: LibSQLDatabase<any>, )
| 268 | }; |
| 269 | |
| 270 | export const pushSQLiteSchema = async ( |
| 271 | imports: Record<string, unknown>, |
| 272 | drizzleInstance: LibSQLDatabase<any>, |
| 273 | ) => { |
| 274 | const { applySqliteSnapshotsDiff } = await import('./snapshotsDiffer'); |
| 275 | const { sql } = await import('drizzle-orm'); |
| 276 | |
| 277 | const db: SQLiteDB = { |
| 278 | query: async (query: string, params?: any[]) => { |
| 279 | const res = drizzleInstance.all<any>(sql.raw(query)); |
| 280 | return res; |
| 281 | }, |
| 282 | run: async (query: string) => { |
| 283 | return Promise.resolve(drizzleInstance.run(sql.raw(query))).then( |
| 284 | () => {}, |
| 285 | ); |
| 286 | }, |
| 287 | }; |
| 288 | |
| 289 | const cur = await generateSQLiteDrizzleJson(imports); |
| 290 | const { schema: prev } = await sqlitePushIntrospect(db, []); |
| 291 | |
| 292 | const validatedPrev = sqliteSchema.parse(prev); |
| 293 | const validatedCur = sqliteSchema.parse(cur); |
| 294 | |
| 295 | const squashedPrev = squashSqliteScheme(validatedPrev, 'push'); |
| 296 | const squashedCur = squashSqliteScheme(validatedCur, 'push'); |
| 297 | |
| 298 | const { statements, _meta } = await applySqliteSnapshotsDiff( |
| 299 | squashedPrev, |
| 300 | squashedCur, |
| 301 | tablesResolver, |
| 302 | columnsResolver, |
| 303 | sqliteViewsResolver, |
| 304 | validatedPrev, |
| 305 | validatedCur, |
| 306 | 'push', |
| 307 | ); |
| 308 | |
| 309 | const { shouldAskForApprove, statementsToExecute, infoToPrint } = await logSuggestionsAndReturn( |
| 310 | db, |
| 311 | statements, |
| 312 | squashedPrev, |
| 313 | squashedCur, |
| 314 | _meta!, |
| 315 | ); |
| 316 | |
| 317 | return { |
| 318 | hasDataLoss: shouldAskForApprove, |
| 319 | warnings: infoToPrint, |
| 320 | statementsToExecute, |
| 321 | apply: async () => { |
| 322 | for (const dStmnt of statementsToExecute) { |
| 323 | await db.query(dStmnt); |
| 324 | } |
| 325 | }, |
| 326 | }; |
| 327 | }; |
nothing calls this directly
no test coverage detected