( imports: Record<string, unknown>, drizzleInstance: SingleStoreDriverDatabase<any>, databaseName: string, )
| 543 | }; |
| 544 | |
| 545 | export const pushSingleStoreSchema = async ( |
| 546 | imports: Record<string, unknown>, |
| 547 | drizzleInstance: SingleStoreDriverDatabase<any>, |
| 548 | databaseName: string, |
| 549 | ) => { |
| 550 | const { applySingleStoreSnapshotsDiff } = await import('./snapshotsDiffer'); |
| 551 | const { logSuggestionsAndReturn } = await import( |
| 552 | './cli/commands/singlestorePushUtils' |
| 553 | ); |
| 554 | const { singlestorePushIntrospect } = await import( |
| 555 | './cli/commands/singlestoreIntrospect' |
| 556 | ); |
| 557 | const { sql } = await import('drizzle-orm'); |
| 558 | |
| 559 | const db: DB = { |
| 560 | query: async (query: string) => { |
| 561 | const res = await drizzleInstance.execute(sql.raw(query)); |
| 562 | return res[0] as unknown as any[]; |
| 563 | }, |
| 564 | }; |
| 565 | const cur = await generateSingleStoreDrizzleJson(imports); |
| 566 | const { schema: prev } = await singlestorePushIntrospect(db, databaseName, []); |
| 567 | |
| 568 | const validatedPrev = singlestoreSchema.parse(prev); |
| 569 | const validatedCur = singlestoreSchema.parse(cur); |
| 570 | |
| 571 | const squashedPrev = squashSingleStoreScheme(validatedPrev); |
| 572 | const squashedCur = squashSingleStoreScheme(validatedCur); |
| 573 | |
| 574 | const { statements } = await applySingleStoreSnapshotsDiff( |
| 575 | squashedPrev, |
| 576 | squashedCur, |
| 577 | tablesResolver, |
| 578 | columnsResolver, |
| 579 | /* singleStoreViewsResolver, */ |
| 580 | validatedPrev, |
| 581 | validatedCur, |
| 582 | 'push', |
| 583 | ); |
| 584 | |
| 585 | const { shouldAskForApprove, statementsToExecute, infoToPrint } = await logSuggestionsAndReturn( |
| 586 | db, |
| 587 | statements, |
| 588 | validatedCur, |
| 589 | validatedPrev, |
| 590 | ); |
| 591 | |
| 592 | return { |
| 593 | hasDataLoss: shouldAskForApprove, |
| 594 | warnings: infoToPrint, |
| 595 | statementsToExecute, |
| 596 | apply: async () => { |
| 597 | for (const dStmnt of statementsToExecute) { |
| 598 | await db.query(dStmnt); |
| 599 | } |
| 600 | }, |
| 601 | }; |
| 602 | }; |
nothing calls this directly
no test coverage detected