MCPcopy
hub / github.com/drizzle-team/drizzle-orm / pushSchema

Function pushSchema

drizzle-kit/src/api.ts:125–188  ·  view source on GitHub ↗
(
	imports: Record<string, unknown>,
	drizzleInstance: PgDatabase<any>,
	schemaFilters?: string[],
	tablesFilter?: string[],
	extensionsFilters?: Config['extensionsFilters'],
)

Source from the content-addressed store, hash-verified

123};
124
125export const pushSchema = async (
126 imports: Record<string, unknown>,
127 drizzleInstance: PgDatabase<any>,
128 schemaFilters?: string[],
129 tablesFilter?: string[],
130 extensionsFilters?: Config['extensionsFilters'],
131) => {
132 const { applyPgSnapshotsDiff } = await import('./snapshotsDiffer');
133 const { sql } = await import('drizzle-orm');
134 const filters = (tablesFilter ?? []).concat(
135 getTablesFilterByExtensions({ extensionsFilters, dialect: 'postgresql' }),
136 );
137
138 const db: DB = {
139 query: async (query: string, params?: any[]) => {
140 const res = await drizzleInstance.execute(sql.raw(query));
141 return res.rows;
142 },
143 };
144
145 const cur = generateDrizzleJson(imports);
146 const { schema: prev } = await pgPushIntrospect(
147 db,
148 filters,
149 schemaFilters ?? ['public'],
150 undefined,
151 );
152
153 const validatedPrev = pgSchema.parse(prev);
154 const validatedCur = pgSchema.parse(cur);
155
156 const squashedPrev = squashPgScheme(validatedPrev, 'push');
157 const squashedCur = squashPgScheme(validatedCur, 'push');
158
159 const { statements } = await applyPgSnapshotsDiff(
160 squashedPrev,
161 squashedCur,
162 schemasResolver,
163 enumsResolver,
164 sequencesResolver,
165 policyResolver,
166 indPolicyResolver,
167 roleResolver,
168 tablesResolver,
169 columnsResolver,
170 viewsResolver,
171 validatedPrev,
172 validatedCur,
173 'push',
174 );
175
176 const { shouldAskForApprove, statementsToExecute, infoToPrint } = await pgSuggestions(db, statements);
177
178 return {
179 hasDataLoss: shouldAskForApprove,
180 warnings: infoToPrint,
181 statementsToExecute,
182 apply: async () => {

Callers

nothing calls this directly

Calls 8

pgPushIntrospectFunction · 0.90
squashPgSchemeFunction · 0.90
pgSuggestionsFunction · 0.90
generateDrizzleJsonFunction · 0.85
applyPgSnapshotsDiffFunction · 0.85
executeMethod · 0.45
queryMethod · 0.45

Tested by

no test coverage detected