rake-db 2.14.2 → 2.14.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +33 -94
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +33 -94
- package/dist/index.mjs.map +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -2674,23 +2674,7 @@ JOIN pg_class c
|
|
|
2674
2674
|
JOIN pg_rewrite r ON r.ev_class = c.oid
|
|
2675
2675
|
WHERE ${filterSchema("nc.nspname")}
|
|
2676
2676
|
ORDER BY c.relname`;
|
|
2677
|
-
const
|
|
2678
|
-
tablesSql,
|
|
2679
|
-
"tables"
|
|
2680
|
-
)}, ${jsonAgg(viewsSql, "views")}`;
|
|
2681
|
-
class DbStructure {
|
|
2682
|
-
constructor(db) {
|
|
2683
|
-
this.db = db;
|
|
2684
|
-
}
|
|
2685
|
-
async getStructure() {
|
|
2686
|
-
const {
|
|
2687
|
-
rows: [structure]
|
|
2688
|
-
} = await this.db.query(sql);
|
|
2689
|
-
return structure;
|
|
2690
|
-
}
|
|
2691
|
-
async getIndexes() {
|
|
2692
|
-
const { rows } = await this.db.query(
|
|
2693
|
-
`SELECT
|
|
2677
|
+
const indexesSql = `SELECT
|
|
2694
2678
|
n.nspname "schemaName",
|
|
2695
2679
|
t.relname "tableName",
|
|
2696
2680
|
ic.relname "name",
|
|
@@ -2785,13 +2769,8 @@ JOIN pg_am am ON am.oid = ic.relam
|
|
|
2785
2769
|
LEFT JOIN pg_catalog.pg_class tc ON (ic.reltoastrelid = tc.oid)
|
|
2786
2770
|
WHERE ${filterSchema("n.nspname")}
|
|
2787
2771
|
AND NOT i.indisprimary
|
|
2788
|
-
ORDER BY ic.relname
|
|
2789
|
-
|
|
2790
|
-
return rows;
|
|
2791
|
-
}
|
|
2792
|
-
async getConstraints() {
|
|
2793
|
-
const { rows } = await this.db.query(
|
|
2794
|
-
`SELECT
|
|
2772
|
+
ORDER BY ic.relname`;
|
|
2773
|
+
const constraintsSql = `SELECT
|
|
2795
2774
|
s.nspname AS "schemaName",
|
|
2796
2775
|
t.relname AS "tableName",
|
|
2797
2776
|
c.conname AS "name",
|
|
@@ -2857,13 +2836,8 @@ JOIN pg_catalog.pg_namespace s
|
|
|
2857
2836
|
ON s.oid = t.relnamespace
|
|
2858
2837
|
AND contype IN ('p', 'f', 'c')
|
|
2859
2838
|
AND ${filterSchema("s.nspname")}
|
|
2860
|
-
ORDER BY c.conname
|
|
2861
|
-
|
|
2862
|
-
return rows;
|
|
2863
|
-
}
|
|
2864
|
-
async getTriggers() {
|
|
2865
|
-
const { rows } = await this.db.query(
|
|
2866
|
-
`SELECT event_object_schema AS "schemaName",
|
|
2839
|
+
ORDER BY c.conname`;
|
|
2840
|
+
const triggersSql = `SELECT event_object_schema AS "schemaName",
|
|
2867
2841
|
event_object_table AS "tableName",
|
|
2868
2842
|
trigger_schema AS "triggerSchema",
|
|
2869
2843
|
trigger_name AS name,
|
|
@@ -2874,25 +2848,15 @@ ORDER BY c.conname`
|
|
|
2874
2848
|
FROM information_schema.triggers
|
|
2875
2849
|
WHERE ${filterSchema("event_object_schema")}
|
|
2876
2850
|
GROUP BY event_object_schema, event_object_table, trigger_schema, trigger_name, action_timing, action_condition, action_statement
|
|
2877
|
-
ORDER BY trigger_name
|
|
2878
|
-
|
|
2879
|
-
return rows;
|
|
2880
|
-
}
|
|
2881
|
-
async getExtensions() {
|
|
2882
|
-
const { rows } = await this.db.query(
|
|
2883
|
-
`SELECT
|
|
2851
|
+
ORDER BY trigger_name`;
|
|
2852
|
+
const extensionsSql = `SELECT
|
|
2884
2853
|
nspname AS "schemaName",
|
|
2885
2854
|
extname AS "name",
|
|
2886
2855
|
extversion AS version
|
|
2887
2856
|
FROM pg_extension
|
|
2888
2857
|
JOIN pg_catalog.pg_namespace n ON n.oid = extnamespace
|
|
2889
|
-
AND ${filterSchema("n.nspname")}
|
|
2890
|
-
|
|
2891
|
-
return rows;
|
|
2892
|
-
}
|
|
2893
|
-
async getEnums() {
|
|
2894
|
-
const { rows } = await this.db.query(
|
|
2895
|
-
`SELECT
|
|
2858
|
+
AND ${filterSchema("n.nspname")}`;
|
|
2859
|
+
const enumsSql = `SELECT
|
|
2896
2860
|
n.nspname as "schemaName",
|
|
2897
2861
|
t.typname as name,
|
|
2898
2862
|
json_agg(e.enumlabel) as values
|
|
@@ -2900,12 +2864,8 @@ FROM pg_type t
|
|
|
2900
2864
|
JOIN pg_enum e ON t.oid = e.enumtypid
|
|
2901
2865
|
JOIN pg_catalog.pg_namespace n ON n.oid = t.typnamespace
|
|
2902
2866
|
WHERE ${filterSchema("n.nspname")}
|
|
2903
|
-
GROUP BY n.nspname, t.typname
|
|
2904
|
-
|
|
2905
|
-
return rows;
|
|
2906
|
-
}
|
|
2907
|
-
async getDomains() {
|
|
2908
|
-
const { rows } = await this.db.query(`SELECT
|
|
2867
|
+
GROUP BY n.nspname, t.typname`;
|
|
2868
|
+
const domainsSql = `SELECT
|
|
2909
2869
|
n.nspname AS "schemaName",
|
|
2910
2870
|
d.typname AS "name",
|
|
2911
2871
|
t.typname AS "type",
|
|
@@ -2933,11 +2893,8 @@ JOIN pg_catalog.pg_type t
|
|
|
2933
2893
|
) = d.typbasetype
|
|
2934
2894
|
JOIN pg_catalog.pg_namespace s ON s.oid = t.typnamespace
|
|
2935
2895
|
LEFT JOIN pg_catalog.pg_constraint c ON c.contypid = d.oid
|
|
2936
|
-
WHERE d.typtype = 'd' AND ${filterSchema("n.nspname")}
|
|
2937
|
-
|
|
2938
|
-
}
|
|
2939
|
-
async getCollations() {
|
|
2940
|
-
const { rows } = await this.db.query(`SELECT
|
|
2896
|
+
WHERE d.typtype = 'd' AND ${filterSchema("n.nspname")}`;
|
|
2897
|
+
const collationsSql = `SELECT
|
|
2941
2898
|
nspname "schema",
|
|
2942
2899
|
collname "name",
|
|
2943
2900
|
CASE WHEN collprovider = 'i' THEN 'icu' WHEN collprovider = 'c' THEN 'libc' ELSE collprovider::text END "provider",
|
|
@@ -2948,10 +2905,23 @@ WHERE d.typtype = 'd' AND ${filterSchema("n.nspname")}`);
|
|
|
2948
2905
|
collversion "version"
|
|
2949
2906
|
FROM pg_collation
|
|
2950
2907
|
JOIN pg_namespace n on pg_collation.collnamespace = n.oid
|
|
2951
|
-
WHERE ${filterSchema("n.nspname")}
|
|
2952
|
-
|
|
2953
|
-
|
|
2954
|
-
|
|
2908
|
+
WHERE ${filterSchema("n.nspname")}`;
|
|
2909
|
+
const sql = `SELECT (${schemasSql}) AS "schemas", ${jsonAgg(
|
|
2910
|
+
tablesSql,
|
|
2911
|
+
"tables"
|
|
2912
|
+
)}, ${jsonAgg(viewsSql, "views")}, ${jsonAgg(indexesSql, "indexes")}, ${jsonAgg(
|
|
2913
|
+
constraintsSql,
|
|
2914
|
+
"constraints"
|
|
2915
|
+
)}, ${jsonAgg(triggersSql, "triggers")}, ${jsonAgg(
|
|
2916
|
+
extensionsSql,
|
|
2917
|
+
"extensions"
|
|
2918
|
+
)}, ${jsonAgg(enumsSql, "enums")}, ${jsonAgg(domainsSql, "domains")}, ${jsonAgg(
|
|
2919
|
+
collationsSql,
|
|
2920
|
+
"collations"
|
|
2921
|
+
)}`;
|
|
2922
|
+
async function introspectDbSchema(db) {
|
|
2923
|
+
const data = await db.query(sql);
|
|
2924
|
+
return data.rows[0];
|
|
2955
2925
|
}
|
|
2956
2926
|
|
|
2957
2927
|
var __defProp$1 = Object.defineProperty;
|
|
@@ -2998,9 +2968,9 @@ const fkeyActionMap = {
|
|
|
2998
2968
|
n: "SET NULL",
|
|
2999
2969
|
d: "SET DEFAULT"
|
|
3000
2970
|
};
|
|
3001
|
-
const structureToAst = async (ctx,
|
|
2971
|
+
const structureToAst = async (ctx, adapter) => {
|
|
3002
2972
|
const ast = [];
|
|
3003
|
-
const data = await
|
|
2973
|
+
const data = await introspectDbSchema(adapter);
|
|
3004
2974
|
for (const name of data.schemas) {
|
|
3005
2975
|
if (name === "public")
|
|
3006
2976
|
continue;
|
|
@@ -3118,36 +3088,6 @@ const structureToAst = async (ctx, db) => {
|
|
|
3118
3088
|
}
|
|
3119
3089
|
return ast;
|
|
3120
3090
|
};
|
|
3121
|
-
const getData = async (db) => {
|
|
3122
|
-
const [
|
|
3123
|
-
{ schemas, tables, views },
|
|
3124
|
-
constraints,
|
|
3125
|
-
indexes,
|
|
3126
|
-
extensions,
|
|
3127
|
-
enums,
|
|
3128
|
-
domains,
|
|
3129
|
-
collations
|
|
3130
|
-
] = await Promise.all([
|
|
3131
|
-
db.getStructure(),
|
|
3132
|
-
db.getConstraints(),
|
|
3133
|
-
db.getIndexes(),
|
|
3134
|
-
db.getExtensions(),
|
|
3135
|
-
db.getEnums(),
|
|
3136
|
-
db.getDomains(),
|
|
3137
|
-
db.getCollations()
|
|
3138
|
-
]);
|
|
3139
|
-
return {
|
|
3140
|
-
schemas,
|
|
3141
|
-
tables,
|
|
3142
|
-
views,
|
|
3143
|
-
constraints,
|
|
3144
|
-
indexes,
|
|
3145
|
-
extensions,
|
|
3146
|
-
enums,
|
|
3147
|
-
domains,
|
|
3148
|
-
collations
|
|
3149
|
-
};
|
|
3150
|
-
};
|
|
3151
3091
|
const makeBelongsToTable = (schema, table) => (item) => item.schemaName === schema && item.tableName === table;
|
|
3152
3092
|
const getIsSerial = (item) => {
|
|
3153
3093
|
if (item.type === "int2" || item.type === "int4" || item.type === "int8") {
|
|
@@ -3707,7 +3647,6 @@ const pullDbStructure = async (options, config) => {
|
|
|
3707
3647
|
var _a, _b, _c, _d;
|
|
3708
3648
|
const adapter = new pqb.Adapter(options);
|
|
3709
3649
|
const currentSchema = adapter.schema || "public";
|
|
3710
|
-
const db = new DbStructure(adapter);
|
|
3711
3650
|
const ctx = {
|
|
3712
3651
|
snakeCase: config.snakeCase,
|
|
3713
3652
|
unsupportedTypes: {},
|
|
@@ -3715,7 +3654,7 @@ const pullDbStructure = async (options, config) => {
|
|
|
3715
3654
|
columnSchemaConfig: config.schemaConfig,
|
|
3716
3655
|
columnsByType: pqb.makeColumnsByType(config.schemaConfig)
|
|
3717
3656
|
};
|
|
3718
|
-
const ast = await structureToAst(ctx,
|
|
3657
|
+
const ast = await structureToAst(ctx, adapter);
|
|
3719
3658
|
await adapter.close();
|
|
3720
3659
|
const result = astToMigration(config, ast);
|
|
3721
3660
|
if (!result)
|