applyJsonDiff() — drizzle-orm Function Reference
Architecture documentation for the applyJsonDiff() function in jsonDiffer.js from the drizzle-orm codebase.
Entity Profile
Dependency Diagram
graph TD 3b61cdb0_0771_3cda_8dbf_5ecbe8a49a2b["applyJsonDiff()"] 42cd5bcb_caa4_6b61_11ea_da1b767eeadd["jsonDiffer.js"] 3b61cdb0_0771_3cda_8dbf_5ecbe8a49a2b -->|defined in| 42cd5bcb_caa4_6b61_11ea_da1b767eeadd c7a398db_43c9_7771_09b7_73bc09e703e8["applyPgSnapshotsDiff()"] c7a398db_43c9_7771_09b7_73bc09e703e8 -->|calls| 3b61cdb0_0771_3cda_8dbf_5ecbe8a49a2b a5972ffc_ff1b_9523_2495_5373af710e65["applyMysqlSnapshotsDiff()"] a5972ffc_ff1b_9523_2495_5373af710e65 -->|calls| 3b61cdb0_0771_3cda_8dbf_5ecbe8a49a2b d4992b27_bf78_8099_5134_750cef1c518c["applySingleStoreSnapshotsDiff()"] d4992b27_bf78_8099_5134_750cef1c518c -->|calls| 3b61cdb0_0771_3cda_8dbf_5ecbe8a49a2b d9097b7e_1e27_d29f_7732_f2fa1447f2b8["applySqliteSnapshotsDiff()"] d9097b7e_1e27_d29f_7732_f2fa1447f2b8 -->|calls| 3b61cdb0_0771_3cda_8dbf_5ecbe8a49a2b 55569cde_7638_9cfc_9dcd_34636d975ec3["applyLibSQLSnapshotsDiff()"] 55569cde_7638_9cfc_9dcd_34636d975ec3 -->|calls| 3b61cdb0_0771_3cda_8dbf_5ecbe8a49a2b 9996c7a6_7ccf_96a1_145d_f1d2537e79b6["mapArraysDiff()"] 3b61cdb0_0771_3cda_8dbf_5ecbe8a49a2b -->|calls| 9996c7a6_7ccf_96a1_145d_f1d2537e79b6 906f6136_df62_f258_6513_16b2c830beec["findAlternationsInTable()"] 3b61cdb0_0771_3cda_8dbf_5ecbe8a49a2b -->|calls| 906f6136_df62_f258_6513_16b2c830beec style 3b61cdb0_0771_3cda_8dbf_5ecbe8a49a2b fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
drizzle-kit/src/jsonDiffer.js lines 208–411
export function applyJsonDiff(json1, json2) {
json1 = JSON.parse(JSON.stringify(json1));
json2 = JSON.parse(JSON.stringify(json2));
// deep copy, needed because of the bug in diff library
const rawDiff = diff(json1, json2);
const difference = JSON.parse(JSON.stringify(rawDiff || {}));
difference.schemas = difference.schemas || {};
difference.tables = difference.tables || {};
difference.enums = difference.enums || {};
difference.sequences = difference.sequences || {};
difference.roles = difference.roles || {};
difference.policies = difference.policies || {};
difference.views = difference.views || {};
// remove added/deleted schemas
const schemaKeys = Object.keys(difference.schemas);
for (let key of schemaKeys) {
if (key.endsWith('__added') || key.endsWith('__deleted')) {
delete difference.schemas[key];
continue;
}
}
// remove added/deleted tables
const tableKeys = Object.keys(difference.tables);
for (let key of tableKeys) {
if (key.endsWith('__added') || key.endsWith('__deleted')) {
delete difference.tables[key];
continue;
}
// supply table name and schema for altered tables
const table = json1.tables[key];
difference.tables[key] = {
name: table.name,
schema: table.schema,
...difference.tables[key],
};
}
for (let [tableKey, tableValue] of Object.entries(difference.tables)) {
const table = difference.tables[tableKey];
const columns = tableValue.columns || {};
const columnKeys = Object.keys(columns);
for (let key of columnKeys) {
if (key.endsWith('__added') || key.endsWith('__deleted')) {
delete table.columns[key];
continue;
}
}
if (Object.keys(columns).length === 0) {
delete table['columns'];
}
if (
'name' in table
&& 'schema' in table
&& Object.keys(table).length === 2
) {
delete difference.tables[tableKey];
}
}
const enumsEntries = Object.entries(difference.enums);
const alteredEnums = enumsEntries
.filter((it) => !(it[0].includes('__added') || it[0].includes('__deleted')))
.map((it) => {
const enumEntry = json1.enums[it[0]];
const { name, schema, values } = enumEntry;
const sequence = mapArraysDiff(values, it[1].values);
const addedValues = sequence
.filter((it) => it.type === 'added')
.map((it) => {
return {
before: it.before,
value: it.value,
};
Domain
Subdomains
Defined In
Called By
Source
Frequently Asked Questions
What does applyJsonDiff() do?
applyJsonDiff() is a function in the drizzle-orm codebase, defined in drizzle-kit/src/jsonDiffer.js.
Where is applyJsonDiff() defined?
applyJsonDiff() is defined in drizzle-kit/src/jsonDiffer.js at line 208.
What does applyJsonDiff() call?
applyJsonDiff() calls 2 function(s): findAlternationsInTable, mapArraysDiff.
What calls applyJsonDiff()?
applyJsonDiff() is called by 5 function(s): applyLibSQLSnapshotsDiff, applyMysqlSnapshotsDiff, applyPgSnapshotsDiff, applySingleStoreSnapshotsDiff, applySqliteSnapshotsDiff.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free