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

Function applyJsonDiff

drizzle-kit/src/jsonDiffer.js:208–411  ·  view source on GitHub ↗
(json1, json2)

Source from the content-addressed store, hash-verified

206}
207
208export function applyJsonDiff(json1, json2) {
209 json1 = JSON.parse(JSON.stringify(json1));
210 json2 = JSON.parse(JSON.stringify(json2));
211
212 // deep copy, needed because of the bug in diff library
213 const rawDiff = diff(json1, json2);
214
215 const difference = JSON.parse(JSON.stringify(rawDiff || {}));
216 difference.schemas = difference.schemas || {};
217 difference.tables = difference.tables || {};
218 difference.enums = difference.enums || {};
219 difference.sequences = difference.sequences || {};
220 difference.roles = difference.roles || {};
221 difference.policies = difference.policies || {};
222 difference.views = difference.views || {};
223
224 // remove added/deleted schemas
225 const schemaKeys = Object.keys(difference.schemas);
226 for (let key of schemaKeys) {
227 if (key.endsWith('__added') || key.endsWith('__deleted')) {
228 delete difference.schemas[key];
229 continue;
230 }
231 }
232
233 // remove added/deleted tables
234 const tableKeys = Object.keys(difference.tables);
235 for (let key of tableKeys) {
236 if (key.endsWith('__added') || key.endsWith('__deleted')) {
237 delete difference.tables[key];
238 continue;
239 }
240
241 // supply table name and schema for altered tables
242 const table = json1.tables[key];
243 difference.tables[key] = {
244 name: table.name,
245 schema: table.schema,
246 ...difference.tables[key],
247 };
248 }
249
250 for (let [tableKey, tableValue] of Object.entries(difference.tables)) {
251 const table = difference.tables[tableKey];
252 const columns = tableValue.columns || {};
253 const columnKeys = Object.keys(columns);
254 for (let key of columnKeys) {
255 if (key.endsWith('__added') || key.endsWith('__deleted')) {
256 delete table.columns[key];
257 continue;
258 }
259 }
260
261 if (Object.keys(columns).length === 0) {
262 delete table['columns'];
263 }
264
265 if (

Callers 5

applyPgSnapshotsDiffFunction · 0.90
applyMysqlSnapshotsDiffFunction · 0.90
applySqliteSnapshotsDiffFunction · 0.90
applyLibSQLSnapshotsDiffFunction · 0.90

Calls 3

mapArraysDiffFunction · 0.85
findAlternationsInTableFunction · 0.85
valuesMethod · 0.45

Tested by

no test coverage detected