@ez4/pgmigration 0.38.0 → 0.40.0
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/library.cjs +96 -91
- package/dist/library.mjs +90 -85
- package/dist/main.cjs +140 -132
- package/dist/main.mjs +133 -127
- package/dist/queries/indexes.d.ts +2 -0
- package/package.json +7 -7
package/dist/library.cjs
CHANGED
|
@@ -1,94 +1,99 @@
|
|
|
1
|
-
"use strict";var
|
|
2
|
-
typeof
|
|
3
|
-
|
|
4
|
-
TableQuery:()=>H,getTableRepositoryChanges:()=>se});module.exports=ie(
|
|
5
|
-
|
|
6
|
-
ae(
|
|
7
|
-
ename")}),"getTableRepositoryChanges"),ae=
|
|
8
|
-
properties),Object.keys(
|
|
9
|
-
e,
|
|
10
|
-
Column");var
|
|
11
|
-
rawString(
|
|
12
|
-
rawColumn("1").from("pg_constraint").where({conname:e.rawString(
|
|
13
|
-
"getCheckConstraintQuery")
|
|
1
|
+
"use strict";var D=Object.defineProperty;var ee=Object.getOwnPropertyDescriptor;var te=Object.getOwnPropertyNames;var ne=Object.prototype.hasOwnProperty;var r=(e,n)=>D(e,"name",{value:n,configurable:!0});var re=(e,n)=>{for(var d in n)D(e,d,{get:n[d],enumerable:!0})},oe=(e,n,d,x)=>{if(n&&
|
|
2
|
+
typeof n=="object"||typeof n=="function")for(let g of te(n))!ne.call(e,g)&&g!==d&&
|
|
3
|
+
D(e,g,{get:()=>n[g],enumerable:!(x=ee(n,g))||x.enumerable});return e};var ie=e=>oe(D({},"__esModule",{value:!0}),e);var ue={};re(ue,{ColumnQuery:()=>Q,DatabaseQueries:()=>F,IndexQueries:()=>W,RelationQuery:()=>Z,
|
|
4
|
+
TableQuery:()=>H,getTableRepositoryChanges:()=>se});module.exports=ie(ue);var N=require("@ez4/utils"),U=require("@ez4/pgclient/library"),_=require("@ez4/schema");var se=r((e,n)=>(0,N.deepCompareObject)(e,n,{onRename:r((d,x)=>!(0,N.isAnyObject)(
|
|
5
|
+
d)||!(0,N.isAnyObject)(x)?!1:(0,U.isTableMetadata)(d)&&(0,U.isTableMetadata)(x)?
|
|
6
|
+
ae(d.schema,x.schema):(0,_.isAnySchema)(d)&&(0,_.isAnySchema)(x)?ce(d,x):!1,"onR\
|
|
7
|
+
ename")}),"getTableRepositoryChanges"),ae=r((e,n)=>(0,N.deepEqual)(Object.keys(e.
|
|
8
|
+
properties),Object.keys(n.properties)),"canRenameTable"),ce=r((e,n)=>(0,N.deepEqual)(
|
|
9
|
+
e,n,{depth:1,include:{type:!0,definitions:!0,nullable:!0,format:!0}}),"canRename\
|
|
10
|
+
Column");var V=require("@ez4/pgsql");var v=r((e,n)=>{let[d]=e.select().rawColumn("1").from("pg_database").where({datname:e.
|
|
11
|
+
rawString(n)}).build();return d},"getCheckDatabaseQuery"),P=r((e,n)=>{let[d]=e.select().
|
|
12
|
+
rawColumn("1").from("pg_constraint").where({conname:e.rawString(n)}).build();return d},
|
|
13
|
+
"getCheckConstraintQuery"),$=r((e,n,d)=>{let[x]=e.select().rawColumn("1").where(
|
|
14
14
|
{NOT:{exists:e.select().from(e.rawValue("information_schema.columns")).rawColumn(
|
|
15
|
-
"1").where({column_name:e.rawString(
|
|
16
|
-
"getCheckColumnQuery");var F;(
|
|
17
|
-
CREATE DATABASE "${
|
|
18
|
-
TABASE IF EXISTS "${
|
|
19
|
-
e)||(0,
|
|
20
|
-
definitions:
|
|
21
|
-
default}`;case"string":return`'${
|
|
22
|
-
|
|
23
|
-
'${
|
|
24
|
-
date":case"time":return"now()";case"uuid":return"gen_random_uuid()"}if(
|
|
25
|
-
null"},"getColumnDefault"),I=
|
|
26
|
-
Object:case
|
|
27
|
-
return"jsonb";case
|
|
28
|
-
text";case
|
|
29
|
-
e)}},"getColumnType"),me=
|
|
30
|
-
ecimal","getColumNumberType"),
|
|
31
|
-
date":return e.format;case"date-time":return"timestamptz";default:let
|
|
32
|
-
maxLength;return(0,L.isAnyNumber)(
|
|
33
|
-
properties){let
|
|
34
|
-
|
|
35
|
-
prepareRename=
|
|
36
|
-
areRename"),
|
|
37
|
-
build()}),"prepareDelete")))(H||={});var
|
|
38
|
-
tUniqueKeyName"),T=
|
|
39
|
-
e,
|
|
40
|
-
let{columns:
|
|
41
|
-
type.");case q.Index.Primary:{let
|
|
42
|
-
|
|
43
|
-
Unique:{let
|
|
44
|
-
push({check:
|
|
45
|
-
f=
|
|
46
|
-
push({query:S.build()});break}}}return
|
|
47
|
-
let
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
let
|
|
56
|
-
|
|
57
|
-
i
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
15
|
+
"1").where({column_name:e.rawString(d),table_name:e.rawString(n)})}}).build();return x},
|
|
16
|
+
"getCheckColumnQuery");var F;(d=>(d.prepareCreate=r(x=>{let g=new V.SqlBuilder;return{check:v(g,x),query:`\
|
|
17
|
+
CREATE DATABASE "${x}"`}},"prepareCreate"),d.prepareDelete=r(x=>({query:`DROP DA\
|
|
18
|
+
TABASE IF EXISTS "${x}" WITH (FORCE)`}),"prepareDelete")))(F||={});var G=require("@ez4/database");var h=require("@ez4/schema"),L=require("@ez4/utils");var B=r(e=>!!(e.nullable||e.optional),"isOptionalColumn"),O=r((e,n)=>{if((0,h.isScalarSchema)(
|
|
19
|
+
e)||(0,h.isObjectSchema)(e)||(0,h.isArraySchema)(e)||(0,h.isTupleSchema)(e)){let{
|
|
20
|
+
definitions:d}=e;switch(typeof d?.default){case"boolean":case"number":return`${d.
|
|
21
|
+
default}`;case"string":return`'${d.default}'`;case"object":return`'${JSON.stringify(
|
|
22
|
+
d.default)}'`}}if((0,h.isEnumSchema)(e)){let{definitions:d}=e;if(d?.default)return`\
|
|
23
|
+
'${d.default}'`}if((0,h.isStringSchema)(e)&&n)switch(e.format){case"date-time":case"\
|
|
24
|
+
date":case"time":return"now()";case"uuid":return"gen_random_uuid()"}if(B(e))return"\
|
|
25
|
+
null"},"getColumnDefault"),I=r((e,n)=>{switch(e.type){case h.SchemaType.Array:case h.SchemaType.
|
|
26
|
+
Object:case h.SchemaType.Reference:case h.SchemaType.Union:case h.SchemaType.Tuple:
|
|
27
|
+
return"jsonb";case h.SchemaType.Boolean:return"boolean";case h.SchemaType.Enum:return"\
|
|
28
|
+
text";case h.SchemaType.Number:return me(e,n);case h.SchemaType.String:return pe(
|
|
29
|
+
e)}},"getColumnType"),me=r((e,n)=>e.format==="integer"?n?"bigserial":"bigint":"d\
|
|
30
|
+
ecimal","getColumNumberType"),pe=r(e=>{switch(e.format){case"uuid":case"time":case"\
|
|
31
|
+
date":return e.format;case"date-time":return"timestamptz";default:let n=e.definitions?.
|
|
32
|
+
maxLength;return(0,L.isAnyNumber)(n)?`varchar(${n})`:"text"}},"getColumnTextType");var H;(x=>(x.prepareCreate=r((g,y,c,m)=>{let o=g.table(y).create().missing();for(let t in c.
|
|
33
|
+
properties){let s=c.properties[t],p=m[t]?.type===G.Index.Primary,i=!B(s),u=I(s,p),
|
|
34
|
+
l=O(s,p);o.column(t,u,i,l).missing()}return{query:o.build()}},"prepareCreate"),x.
|
|
35
|
+
prepareRename=r((g,y,c)=>({query:g.table(y).rename(c).existing().build()}),"prep\
|
|
36
|
+
areRename"),x.prepareDelete=r((g,y)=>({query:g.table(y).drop().existing().cascade().
|
|
37
|
+
build()}),"prepareDelete")))(H||={});var z=require("@ez4/schema"),q=require("@ez4/database");var J=require("@ez4/utils");var j=r((e,n)=>`${E(e,n)}_pk`,"getPrimaryKeyName"),A=r((e,n)=>`${E(e,n)}_uk`,"ge\
|
|
38
|
+
tUniqueKeyName"),T=r((e,n)=>`${E(e,n)}_sk`,"getSecondaryKeyName"),k=r((e,n)=>`${E(
|
|
39
|
+
e,n)}_fk`,"getRelationName");var E=r((e,n)=>`${e}_${(0,J.toSnakeCase)(n.replaceAll(":","_"))}`,"getName");var W;(y=>{y.prepareCreate=r((c,m,o,t,s)=>{let a={constraints:[],indexes:[]};for(let p in t){
|
|
40
|
+
let{columns:i,type:u}=t[p];switch(u){default:throw new Error("Unsupported index \
|
|
41
|
+
type.");case q.Index.Primary:{let l=j(m,p),f=c.table(m).alter().existing().constraint(
|
|
42
|
+
l).primary(i);a.constraints.push({check:P(c,l),query:f.build()});break}case q.Index.
|
|
43
|
+
Unique:{let l=A(m,p),f=c.table(m).alter().existing().constraint(l).unique(i);a.constraints.
|
|
44
|
+
push({check:P(c,l),query:f.build()});break}case q.Index.Secondary:{let l=T(m,p),
|
|
45
|
+
f=g(i,o),S=c.index(l).create(m,i).type(f).missing();s&&S.concurrent(),a.indexes.
|
|
46
|
+
push({query:S.build()});break}}}return a},"prepareCreate"),y.prepareUpdate=r((c,m,o,t,s,a,p)=>{
|
|
47
|
+
let i={constraints:[],indexes:[]};for(let u in a){let{update:l,create:f,remove:S}=a[u];
|
|
48
|
+
if(S||l){let b=(0,y.prepareDelete)(c,m,{[u]:t[u]});i.constraints.push(...b.constraints),
|
|
49
|
+
i.indexes.push(...b.indexes)}if(f||l){let b=(0,y.prepareCreate)(c,m,o,{[u]:s[u]},
|
|
50
|
+
p);i.constraints.push(...b.constraints),i.indexes.push(...b.indexes)}}return i},
|
|
51
|
+
"prepareUpdate"),y.prepareRename=r((c,m,o,t)=>{let s={constraints:[],indexes:[]};
|
|
52
|
+
for(let a in t){let{type:p}=t[a];switch(p){default:throw new Error("Unsupported \
|
|
53
|
+
index type.");case q.Index.Primary:{let i=j(m,a),u=j(o,a),l=c.table(o).alter().existing().
|
|
54
|
+
constraint(i).rename(u);s.constraints.push({check:P(c,u),query:l.build()});break}case q.Index.
|
|
55
|
+
Unique:{let i=A(m,a),u=A(o,a),l=c.table(o).alter().existing().constraint(i).rename(
|
|
56
|
+
u);s.constraints.push({check:P(c,u),query:l.build()});break}case q.Index.Secondary:{
|
|
57
|
+
let i=T(m,a),u=T(o,a),l=c.index(i).rename(u).existing();s.indexes.push({query:l.
|
|
58
|
+
build()});break}}}return s},"prepareRename"),y.prepareDelete=r((c,m,o)=>{let t={
|
|
59
|
+
constraints:[],indexes:[]};for(let s in o){let{type:a}=o[s];switch(a){default:throw new Error(
|
|
60
|
+
"Unsupported index type.");case q.Index.Primary:{let p=j(m,s),i=c.table(m).alter().
|
|
61
|
+
existing().constraint(p).drop().existing();t.constraints.push({query:i.build()});
|
|
62
|
+
break}case q.Index.Unique:{let p=A(m,s),i=c.table(m).alter().existing().constraint(
|
|
63
|
+
p).drop().existing();t.constraints.push({query:i.build()});break}case q.Index.Secondary:{
|
|
64
|
+
let p=T(m,s),i=c.index(p).drop().existing().concurrent();t.indexes.push({query:i.
|
|
65
|
+
build()});break}}}return t},"prepareDelete");let g=r((c,m)=>{if(c.length===1){let[
|
|
66
|
+
o]=c;switch(m.properties[o]?.type){case z.SchemaType.Object:case z.SchemaType.Union:case z.SchemaType.
|
|
67
|
+
Array:case z.SchemaType.Tuple:return"GIN"}}return"BTREE"},"getIndexType")})(W||=
|
|
68
|
+
{});var X=require("@ez4/pgclient/library"),Y=require("@ez4/schema"),M=require("@ez4/database");var Z;(m=>{m.prepareCreate=r((o,t,s,a)=>{let p=[];for(let i in a){let u=a[i];if(g(
|
|
69
|
+
u))continue;let{[u.targetColumn]:l}=s.properties,f=k(t,i),S=!!(0,Y.isNullishSchema)(
|
|
70
|
+
l);p.push({check:P(o,f),query:c(o,t,f,u,S).build()})}return p},"prepareCreate"),
|
|
71
|
+
m.prepareUpdate=r((o,t,s,a)=>{let p=[];for(let i in s){let u=s[i];if(g(u))continue;
|
|
72
|
+
let l=a[u.targetColumn]?.update,f=l?.optional??l?.nullable;if(f===void 0)continue;
|
|
73
|
+
let S=k(t,i);p.push({query:y(o,t,S).build()},{query:c(o,t,S,u,f).build()})}return p},
|
|
74
|
+
"prepareUpdate"),m.prepareRename=r((o,t,s,a)=>{let p=[];for(let i in a){let u=a[i];
|
|
75
|
+
if(g(u))continue;let l=k(t,i),f=k(s,i),S=o.table(s).alter().existing().constraint(
|
|
76
|
+
l).rename(f);p.push({check:P(o,f),query:S.build()})}return p},"prepareRename"),m.
|
|
77
|
+
prepareDelete=r((o,t,s)=>{let a=[];for(let p in s){let i=s[p];if(g(i))continue;let u=k(
|
|
78
|
+
t,p);a.push({query:y(o,t,u).build()})}return a},"prepareDelete");let g=r(o=>{let{
|
|
79
|
+
sourceIndex:t,targetIndex:s}=o;return!t||t===M.Index.Secondary||s===M.Index.Primary},
|
|
80
|
+
"isNotRealRelation"),y=r((o,t,s)=>o.table(t).alter().existing().constraint(s).drop().
|
|
81
|
+
existing(),"getDeleteQuery"),c=r((o,t,s,a,p)=>{let{sourceTable:i,sourceColumn:u,
|
|
82
|
+
targetColumn:l}=a,f=(0,X.getTableName)(i),S=o.table(t).alter().existing().constraint(
|
|
83
|
+
s).foreign(l,f,[u]);return p?S.delete().null():S.delete().cascade(),S.update().cascade(),
|
|
84
|
+
S},"getCreateQuery")})(Z||={});var K=require("@ez4/database");var Q;(g=>(g.prepareCreate=r((y,c,m,o)=>{let t=y.table(c).alter().existing();for(let s in o){
|
|
85
|
+
let a=o[s],i=m[s]?.type===K.Index.Primary,u=!B(a),l=I(a,i),f=O(a,i);t.add(s,l,u,
|
|
86
|
+
f).missing()}return{query:t.build()}},"prepareCreate"),g.prepareUpdate=r((y,c,m,o,t)=>{
|
|
87
|
+
let s=[];for(let a in t){let{create:p,update:i,nested:u,remove:l}=t[a],f=m.properties[a],
|
|
88
|
+
b=o[a]?.type===K.Index.Primary,R=y.table(c).alter().existing().column(a);if(p){let w=p.
|
|
89
|
+
definitions?.default,C=p?.nullable;w!==void 0&&R.default(O(f,b)),C!==void 0&&R.optional(
|
|
90
|
+
C)}if(i||u){let w=u?.definitions?.update?.default,C=i?.nullable;i?.type!==void 0&&
|
|
91
|
+
R.type(I(f,b)),w!==void 0&&R.default(O(f,b)),C!==void 0&&R.optional(C)}if(l){let w=l.
|
|
92
|
+
definitions?.default,C=l?.nullable;w!==void 0&&R.default(null),C!==void 0&&R.optional(
|
|
93
|
+
C)}R.empty||s.push({check:$(y,c,a),query:R.build()})}return s},"prepareUpdate"),
|
|
94
|
+
g.prepareRename=r((y,c,m)=>{let o=[];for(let t in m){let s=m[t],a=y.table(c).alter().
|
|
95
|
+
existing().rename(t,s);o.push({check:$(y,c,t),query:a.build()})}return o},"prepa\
|
|
96
|
+
reRename"),g.prepareDelete=r((y,c,m)=>{let o=y.table(c).alter().existing();for(let t in m)
|
|
97
|
+
o.drop(t).existing();return{query:o.build()}},"prepareDelete")))(Q||={});0&&(module.exports={ColumnQuery,DatabaseQueries,IndexQueries,RelationQuery,TableQuery,
|
|
93
98
|
getTableRepositoryChanges});
|
|
94
99
|
//# sourceMappingURL=library.cjs.map
|
package/dist/library.mjs
CHANGED
|
@@ -1,89 +1,94 @@
|
|
|
1
|
-
var
|
|
2
|
-
isTableMetadata as
|
|
3
|
-
schema)
|
|
4
|
-
Object.keys(e.properties),Object.keys(
|
|
5
|
-
e,
|
|
6
|
-
Column");import{SqlBuilder as H}from"@ez4/pgsql";var M=
|
|
7
|
-
rawString(
|
|
8
|
-
rawColumn("1").from("pg_constraint").where({conname:e.rawString(
|
|
9
|
-
"getCheckConstraintQuery"),D=
|
|
1
|
+
var V=Object.defineProperty;var n=(e,c)=>V(e,"name",{value:c,configurable:!0});import{deepEqual as $,deepCompareObject as F,isAnyObject as E}from"@ez4/utils";import{
|
|
2
|
+
isTableMetadata as U}from"@ez4/pgclient/library";import{isAnySchema as _}from"@ez4/schema";var xe=n((e,c)=>F(e,c,{onRename:n((d,f)=>!E(d)||!E(f)?!1:U(d)&&U(f)?L(d.schema,f.
|
|
3
|
+
schema):_(d)&&_(f)?G(d,f):!1,"onRename")}),"getTableRepositoryChanges"),L=n((e,c)=>$(
|
|
4
|
+
Object.keys(e.properties),Object.keys(c.properties)),"canRenameTable"),G=n((e,c)=>$(
|
|
5
|
+
e,c,{depth:1,include:{type:!0,definitions:!0,nullable:!0,format:!0}}),"canRename\
|
|
6
|
+
Column");import{SqlBuilder as H}from"@ez4/pgsql";var M=n((e,c)=>{let[d]=e.select().rawColumn("1").from("pg_database").where({datname:e.
|
|
7
|
+
rawString(c)}).build();return d},"getCheckDatabaseQuery"),N=n((e,c)=>{let[d]=e.select().
|
|
8
|
+
rawColumn("1").from("pg_constraint").where({conname:e.rawString(c)}).build();return d},
|
|
9
|
+
"getCheckConstraintQuery"),D=n((e,c,d)=>{let[f]=e.select().rawColumn("1").where(
|
|
10
10
|
{NOT:{exists:e.select().from(e.rawValue("information_schema.columns")).rawColumn(
|
|
11
|
-
"1").where({column_name:e.rawString(
|
|
12
|
-
"getCheckColumnQuery");var J;(
|
|
13
|
-
ATABASE "${f}"`}},"prepareCreate"),
|
|
11
|
+
"1").where({column_name:e.rawString(d),table_name:e.rawString(c)})}}).build();return f},
|
|
12
|
+
"getCheckColumnQuery");var J;(d=>(d.prepareCreate=n(f=>{let x=new H;return{check:M(x,f),query:`CREATE D\
|
|
13
|
+
ATABASE "${f}"`}},"prepareCreate"),d.prepareDelete=n(f=>({query:`DROP DATABASE I\
|
|
14
14
|
F EXISTS "${f}" WITH (FORCE)`}),"prepareDelete")))(J||={});import{Index as oe}from"@ez4/database";import{isArraySchema as W,isEnumSchema as X,isObjectSchema as Y,isScalarSchema as Z,
|
|
15
|
-
isStringSchema as Q,isTupleSchema as ee,SchemaType as
|
|
16
|
-
isAnyNumber as te}from"@ez4/utils";var
|
|
17
|
-
e)||W(e)||ee(e)){let{definitions:
|
|
18
|
-
number":return`${
|
|
19
|
-
'${JSON.stringify(
|
|
20
|
-
'${
|
|
21
|
-
return"now()";case"uuid":return"gen_random_uuid()"}if(
|
|
22
|
-
umnDefault"),
|
|
23
|
-
Union:case
|
|
24
|
-
text";case
|
|
25
|
-
|
|
26
|
-
rType"),
|
|
27
|
-
date-time":return"timestamptz";default:let
|
|
28
|
-
|
|
29
|
-
properties){let
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
prepareDelete=
|
|
33
|
-
"prepareDelete")))(ie||={});import{SchemaType as
|
|
34
|
-
tUniqueKeyName"),A=
|
|
35
|
-
e,
|
|
36
|
-
let{columns:
|
|
37
|
-
type.");case
|
|
38
|
-
|
|
39
|
-
let
|
|
40
|
-
push({check:
|
|
41
|
-
|
|
42
|
-
query:
|
|
43
|
-
let
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
i).
|
|
55
|
-
let i
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
o
|
|
68
|
-
|
|
69
|
-
build()})}return
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
15
|
+
isStringSchema as Q,isTupleSchema as ee,SchemaType as b}from"@ez4/schema";import{
|
|
16
|
+
isAnyNumber as te}from"@ez4/utils";var w=n(e=>!!(e.nullable||e.optional),"isOptionalColumn"),P=n((e,c)=>{if(Z(e)||Y(
|
|
17
|
+
e)||W(e)||ee(e)){let{definitions:d}=e;switch(typeof d?.default){case"boolean":case"\
|
|
18
|
+
number":return`${d.default}`;case"string":return`'${d.default}'`;case"object":return`\
|
|
19
|
+
'${JSON.stringify(d.default)}'`}}if(X(e)){let{definitions:d}=e;if(d?.default)return`\
|
|
20
|
+
'${d.default}'`}if(Q(e)&&c)switch(e.format){case"date-time":case"date":case"time":
|
|
21
|
+
return"now()";case"uuid":return"gen_random_uuid()"}if(w(e))return"null"},"getCol\
|
|
22
|
+
umnDefault"),B=n((e,c)=>{switch(e.type){case b.Array:case b.Object:case b.Reference:case b.
|
|
23
|
+
Union:case b.Tuple:return"jsonb";case b.Boolean:return"boolean";case b.Enum:return"\
|
|
24
|
+
text";case b.Number:return ne(e,c);case b.String:return re(e)}},"getColumnType"),
|
|
25
|
+
ne=n((e,c)=>e.format==="integer"?c?"bigserial":"bigint":"decimal","getColumNumbe\
|
|
26
|
+
rType"),re=n(e=>{switch(e.format){case"uuid":case"time":case"date":return e.format;case"\
|
|
27
|
+
date-time":return"timestamptz";default:let c=e.definitions?.maxLength;return te(
|
|
28
|
+
c)?`varchar(${c})`:"text"}},"getColumnTextType");var ie;(f=>(f.prepareCreate=n((x,g,a,m)=>{let r=x.table(g).create().missing();for(let t in a.
|
|
29
|
+
properties){let i=a.properties[t],p=m[t]?.type===oe.Primary,o=!w(i),u=B(i,p),l=P(
|
|
30
|
+
i,p);r.column(t,u,o,l).missing()}return{query:r.build()}},"prepareCreate"),f.prepareRename=
|
|
31
|
+
n((x,g,a)=>({query:x.table(g).rename(a).existing().build()}),"prepareRename"),f.
|
|
32
|
+
prepareDelete=n((x,g)=>({query:x.table(g).drop().existing().cascade().build()}),
|
|
33
|
+
"prepareDelete")))(ie||={});import{SchemaType as z}from"@ez4/schema";import{Index as R}from"@ez4/database";import{toSnakeCase as se}from"@ez4/utils";var I=n((e,c)=>`${T(e,c)}_pk`,"getPrimaryKeyName"),j=n((e,c)=>`${T(e,c)}_uk`,"ge\
|
|
34
|
+
tUniqueKeyName"),A=n((e,c)=>`${T(e,c)}_sk`,"getSecondaryKeyName"),O=n((e,c)=>`${T(
|
|
35
|
+
e,c)}_fk`,"getRelationName");var T=n((e,c)=>`${e}_${se(c.replaceAll(":","_"))}`,"getName");var ae;(g=>{g.prepareCreate=n((a,m,r,t,i)=>{let s={constraints:[],indexes:[]};for(let p in t){
|
|
36
|
+
let{columns:o,type:u}=t[p];switch(u){default:throw new Error("Unsupported index \
|
|
37
|
+
type.");case R.Primary:{let l=I(m,p),y=a.table(m).alter().existing().constraint(
|
|
38
|
+
l).primary(o);s.constraints.push({check:N(a,l),query:y.build()});break}case R.Unique:{
|
|
39
|
+
let l=j(m,p),y=a.table(m).alter().existing().constraint(l).unique(o);s.constraints.
|
|
40
|
+
push({check:N(a,l),query:y.build()});break}case R.Secondary:{let l=A(m,p),y=x(o,
|
|
41
|
+
r),h=a.index(l).create(m,o).type(y).missing();i&&h.concurrent(),s.indexes.push({
|
|
42
|
+
query:h.build()});break}}}return s},"prepareCreate"),g.prepareUpdate=n((a,m,r,t,i,s,p)=>{
|
|
43
|
+
let o={constraints:[],indexes:[]};for(let u in s){let{update:l,create:y,remove:h}=s[u];
|
|
44
|
+
if(h||l){let S=(0,g.prepareDelete)(a,m,{[u]:t[u]});o.constraints.push(...S.constraints),
|
|
45
|
+
o.indexes.push(...S.indexes)}if(y||l){let S=(0,g.prepareCreate)(a,m,r,{[u]:i[u]},
|
|
46
|
+
p);o.constraints.push(...S.constraints),o.indexes.push(...S.indexes)}}return o},
|
|
47
|
+
"prepareUpdate"),g.prepareRename=n((a,m,r,t)=>{let i={constraints:[],indexes:[]};
|
|
48
|
+
for(let s in t){let{type:p}=t[s];switch(p){default:throw new Error("Unsupported \
|
|
49
|
+
index type.");case R.Primary:{let o=I(m,s),u=I(r,s),l=a.table(r).alter().existing().
|
|
50
|
+
constraint(o).rename(u);i.constraints.push({check:N(a,u),query:l.build()});break}case R.
|
|
51
|
+
Unique:{let o=j(m,s),u=j(r,s),l=a.table(r).alter().existing().constraint(o).rename(
|
|
52
|
+
u);i.constraints.push({check:N(a,u),query:l.build()});break}case R.Secondary:{let o=A(
|
|
53
|
+
m,s),u=A(r,s),l=a.index(o).rename(u).existing();i.indexes.push({query:l.build()});
|
|
54
|
+
break}}}return i},"prepareRename"),g.prepareDelete=n((a,m,r)=>{let t={constraints:[],
|
|
55
|
+
indexes:[]};for(let i in r){let{type:s}=r[i];switch(s){default:throw new Error("\
|
|
56
|
+
Unsupported index type.");case R.Primary:{let p=I(m,i),o=a.table(m).alter().existing().
|
|
57
|
+
constraint(p).drop().existing();t.constraints.push({query:o.build()});break}case R.
|
|
58
|
+
Unique:{let p=j(m,i),o=a.table(m).alter().existing().constraint(p).drop().existing();
|
|
59
|
+
t.constraints.push({query:o.build()});break}case R.Secondary:{let p=A(m,i),o=a.index(
|
|
60
|
+
p).drop().existing().concurrent();t.indexes.push({query:o.build()});break}}}return t},
|
|
61
|
+
"prepareDelete");let x=n((a,m)=>{if(a.length===1){let[r]=a;switch(m.properties[r]?.
|
|
62
|
+
type){case z.Object:case z.Union:case z.Array:case z.Tuple:return"GIN"}}return"B\
|
|
63
|
+
TREE"},"getIndexType")})(ae||={});import{getTableName as ce}from"@ez4/pgclient/library";import{isNullishSchema as me}from"@ez4/schema";
|
|
64
|
+
import{Index as K}from"@ez4/database";var pe;(m=>{m.prepareCreate=n((r,t,i,s)=>{let p=[];for(let o in s){let u=s[o];if(x(
|
|
65
|
+
u))continue;let{[u.targetColumn]:l}=i.properties,y=O(t,o),h=!!me(l);p.push({check:N(
|
|
66
|
+
r,y),query:a(r,t,y,u,h).build()})}return p},"prepareCreate"),m.prepareUpdate=n((r,t,i,s)=>{
|
|
67
|
+
let p=[];for(let o in i){let u=i[o];if(x(u))continue;let l=s[u.targetColumn]?.update,
|
|
68
|
+
y=l?.optional??l?.nullable;if(y===void 0)continue;let h=O(t,o);p.push({query:g(r,
|
|
69
|
+
t,h).build()},{query:a(r,t,h,u,y).build()})}return p},"prepareUpdate"),m.prepareRename=
|
|
70
|
+
n((r,t,i,s)=>{let p=[];for(let o in s){let u=s[o];if(x(u))continue;let l=O(t,o),
|
|
71
|
+
y=O(i,o),h=r.table(i).alter().existing().constraint(l).rename(y);p.push({check:N(
|
|
72
|
+
r,y),query:h.build()})}return p},"prepareRename"),m.prepareDelete=n((r,t,i)=>{let s=[];
|
|
73
|
+
for(let p in i){let o=i[p];if(x(o))continue;let u=O(t,p);s.push({query:g(r,t,u).
|
|
74
|
+
build()})}return s},"prepareDelete");let x=n(r=>{let{sourceIndex:t,targetIndex:i}=r;
|
|
75
|
+
return!t||t===K.Secondary||i===K.Primary},"isNotRealRelation"),g=n((r,t,i)=>r.table(
|
|
76
|
+
t).alter().existing().constraint(i).drop().existing(),"getDeleteQuery"),a=n((r,t,i,s,p)=>{
|
|
77
|
+
let{sourceTable:o,sourceColumn:u,targetColumn:l}=s,y=ce(o),h=r.table(t).alter().
|
|
78
|
+
existing().constraint(i).foreign(l,y,[u]);return p?h.delete().null():h.delete().
|
|
79
|
+
cascade(),h.update().cascade(),h},"getCreateQuery")})(pe||={});import{Index as v}from"@ez4/database";var ue;(x=>(x.prepareCreate=n((g,a,m,r)=>{let t=g.table(a).alter().existing();for(let i in r){
|
|
80
|
+
let s=r[i],o=m[i]?.type===v.Primary,u=!w(s),l=B(s,o),y=P(s,o);t.add(i,l,u,y).missing()}
|
|
81
|
+
return{query:t.build()}},"prepareCreate"),x.prepareUpdate=n((g,a,m,r,t)=>{let i=[];
|
|
82
|
+
for(let s in t){let{create:p,update:o,nested:u,remove:l}=t[s],y=m.properties[s],
|
|
83
|
+
S=r[s]?.type===v.Primary,q=g.table(a).alter().existing().column(s);if(p){let k=p.
|
|
84
|
+
definitions?.default,C=p?.nullable;k!==void 0&&q.default(P(y,S)),C!==void 0&&q.optional(
|
|
85
|
+
C)}if(o||u){let k=u?.definitions?.update?.default,C=o?.nullable;o?.type!==void 0&&
|
|
86
|
+
q.type(B(y,S)),k!==void 0&&q.default(P(y,S)),C!==void 0&&q.optional(C)}if(l){let k=l.
|
|
87
|
+
definitions?.default,C=l?.nullable;k!==void 0&&q.default(null),C!==void 0&&q.optional(
|
|
88
|
+
C)}q.empty||i.push({check:D(g,a,s),query:q.build()})}return i},"prepareUpdate"),
|
|
89
|
+
x.prepareRename=n((g,a,m)=>{let r=[];for(let t in m){let i=m[t],s=g.table(a).alter().
|
|
90
|
+
existing().rename(t,i);r.push({check:D(g,a,t),query:s.build()})}return r},"prepa\
|
|
91
|
+
reRename"),x.prepareDelete=n((g,a,m)=>{let r=g.table(a).alter().existing();for(let t in m)
|
|
92
|
+
r.drop(t).existing();return{query:r.build()}},"prepareDelete")))(ue||={});export{ue as ColumnQuery,J as DatabaseQueries,ae as IndexQueries,pe as RelationQuery,
|
|
88
93
|
ie as TableQuery,xe as getTableRepositoryChanges};
|
|
89
94
|
//# sourceMappingURL=library.mjs.map
|
package/dist/main.cjs
CHANGED
|
@@ -1,134 +1,142 @@
|
|
|
1
|
-
"use strict";var V=Object.defineProperty;var
|
|
2
|
-
typeof
|
|
3
|
-
V(e,
|
|
4
|
-
module.exports=
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
Object:case x.SchemaType.Reference:case x.SchemaType.Union:case x.SchemaType.Tuple:
|
|
13
|
-
return"jsonb";case x.SchemaType.Boolean:return"boolean";case x.SchemaType.Enum:return"\
|
|
14
|
-
text";case x.SchemaType.Number:return ue(e,s);case x.SchemaType.String:return le(
|
|
15
|
-
e)}},"getColumnType"),ue=p((e,s)=>e.format==="integer"?s?"bigserial":"bigint":"d\
|
|
16
|
-
ecimal","getColumNumberType"),le=p(e=>{switch(e.format){case"uuid":case"time":case"\
|
|
17
|
-
date":return e.format;case"date-time":return"timestamptz";default:let s=e.definitions?.
|
|
18
|
-
maxLength;return(0,X.isAnyNumber)(s)?`varchar(${s})`:"text"}},"getColumnTextType");var _;(g=>(g.prepareCreate=p((m,r,u,f)=>{let o=m.table(r).create().missing();for(let t in u.
|
|
19
|
-
properties){let n=u.properties[t],c=f[t]?.type===Y.Index.Primary,l=!U(n),i=M(n,c),
|
|
20
|
-
y=j(n,c);o.column(t,i,l,y).missing()}return{query:o.build()}},"prepareCreate"),g.
|
|
21
|
-
prepareRename=p((m,r,u)=>({query:m.table(r).rename(u).existing().build()}),"prep\
|
|
22
|
-
areRename"),g.prepareDelete=p((m,r)=>({query:m.table(r).drop().existing().cascade().
|
|
23
|
-
build()}),"prepareDelete")))(_||={});var J=require("@ez4/database");var b=p((e,s)=>{let[d]=e.select().rawColumn("1").from("pg_constraint").where({conname:e.
|
|
24
|
-
rawString(s)}).build();return d},"getCheckConstraintQuery"),G=p((e,s,d)=>{let[g]=e.
|
|
1
|
+
"use strict";var V=Object.defineProperty;var ie=Object.getOwnPropertyDescriptor;var ae=Object.getOwnPropertyNames;var ce=Object.prototype.hasOwnProperty;var p=(e,o)=>V(e,"name",{value:o,configurable:!0});var me=(e,o)=>{for(var g in o)V(e,g,{get:o[g],enumerable:!0})},pe=(e,o,g,y)=>{if(o&&
|
|
2
|
+
typeof o=="object"||typeof o=="function")for(let d of ae(o))!ce.call(e,d)&&d!==g&&
|
|
3
|
+
V(e,d,{get:()=>o[d],enumerable:!(y=ie(o,d))||y.enumerable});return e};var ue=e=>pe(V({},"__esModule",{value:!0}),e);var he={};me(he,{getCreateQueries:()=>oe,getDeleteQueries:()=>se,getUpdateQueries:()=>ye});
|
|
4
|
+
module.exports=ue(he);var L=require("@ez4/pgsql");var B=require("@ez4/utils"),G=require("@ez4/pgclient/library"),J=require("@ez4/schema");var Y=p((e,o)=>(0,B.deepCompareObject)(e,o,{onRename:p((g,y)=>!(0,B.isAnyObject)(
|
|
5
|
+
g)||!(0,B.isAnyObject)(y)?!1:(0,G.isTableMetadata)(g)&&(0,G.isTableMetadata)(y)?
|
|
6
|
+
le(g.schema,y.schema):(0,J.isAnySchema)(g)&&(0,J.isAnySchema)(y)?de(g,y):!1,"onR\
|
|
7
|
+
ename")}),"getTableRepositoryChanges"),le=p((e,o)=>(0,B.deepEqual)(Object.keys(e.
|
|
8
|
+
properties),Object.keys(o.properties)),"canRenameTable"),de=p((e,o)=>(0,B.deepEqual)(
|
|
9
|
+
e,o,{depth:1,include:{type:!0,definitions:!0,nullable:!0,format:!0}}),"canRename\
|
|
10
|
+
Column");var C=require("@ez4/schema"),H=require("@ez4/utils");var R=p((e,o)=>{let[g]=e.select().rawColumn("1").from("pg_constraint").where({conname:e.
|
|
11
|
+
rawString(o)}).build();return g},"getCheckConstraintQuery"),F=p((e,o,g)=>{let[y]=e.
|
|
25
12
|
select().rawColumn("1").where({NOT:{exists:e.select().from(e.rawValue("informati\
|
|
26
|
-
on_schema.columns")).rawColumn("1").where({column_name:e.rawString(
|
|
27
|
-
rawString(
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
let
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
q.
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
existing().rename(
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
(
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
let
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
let
|
|
67
|
-
let
|
|
68
|
-
"
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
let{
|
|
80
|
-
type.");case
|
|
81
|
-
|
|
82
|
-
Unique:{let i=
|
|
83
|
-
push({check:
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
prepareCreate(s,
|
|
111
|
-
|
|
112
|
-
"
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
(m.
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
m.
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
let
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
13
|
+
on_schema.columns")).rawColumn("1").where({column_name:e.rawString(g),table_name:e.
|
|
14
|
+
rawString(o)})}}).build();return y},"getCheckColumnQuery");var Z=require("@ez4/utils");var U=p((e,o)=>`${_(e,o)}_pk`,"getPrimaryKeyName"),v=p((e,o)=>`${_(e,o)}_uk`,"ge\
|
|
15
|
+
tUniqueKeyName"),M=p((e,o)=>`${_(e,o)}_sk`,"getSecondaryKeyName"),A=p((e,o)=>`${_(
|
|
16
|
+
e,o)}_fk`,"getRelationName"),k=p((e,o)=>`${_(e,o)}_ck`,"getConstraintName"),_=p(
|
|
17
|
+
(e,o)=>`${e}_${(0,Z.toSnakeCase)(o.replaceAll(":","_"))}`,"getName");var j;(m=>{m.prepareCreate=p((t,n,i)=>{let l=[];for(let r in i){let a=i[r];if((0,C.isEnumSchema)(
|
|
18
|
+
a)||(0,C.isScalarSchema)(a)&&(0,H.isNotNullish)(a.definitions?.value)){let c=k(n,
|
|
19
|
+
r);l.push({check:R(t,c),query:f(t,n,c,r,a).build()})}}return l},"prepareCreate"),
|
|
20
|
+
m.prepareUpdate=p((t,n,i,l,r)=>{let a=[];for(let c in r){let{update:h,create:x,remove:b}=r[c];
|
|
21
|
+
if(b||h){let q=l.properties[c];if(s(q)){let N=k(n,c);a.push({query:u(t,n,N).build()})}}
|
|
22
|
+
if(x||h){let q=i.properties[c];if(s(q)){let N=k(n,c);a.push({check:R(t,N),query:f(
|
|
23
|
+
t,n,N,c,q).build()})}}}return a},"prepareUpdate"),m.prepareRenameTable=p((t,n,i,l)=>{
|
|
24
|
+
let r=[];for(let a in l){let c=l[a];if(s(c)){let h=k(n,a),x=k(i,a),b=t.table(i).
|
|
25
|
+
alter().existing().constraint(h).rename(x);r.push({check:R(t,x),query:b.build()})}}
|
|
26
|
+
return r},"prepareRenameTable"),m.prepareRenameColumns=p((t,n,i,l)=>{let r=[];for(let a in l){
|
|
27
|
+
let c=l[a],h=i[c];if(s(h)){let x=k(n,a),b=k(n,c),q=t.table(n).alter().existing().
|
|
28
|
+
constraint(x).rename(b);r.push({check:R(t,b),query:q.build()})}}return r},"prepa\
|
|
29
|
+
reRenameColumns"),m.prepareDelete=p((t,n,i)=>{let l=[];for(let r in i){let a=i[r];
|
|
30
|
+
if(s(a)){let c=k(n,r);l.push({query:u(t,n,c).build()})}}return l},"prepareDelete");
|
|
31
|
+
let s=p(t=>(0,C.isEnumSchema)(t)||(0,C.isScalarSchema)(t)&&(0,H.isNotNullish)(t.
|
|
32
|
+
definitions?.value),"isConstrainedSchema"),u=p((t,n,i)=>t.table(n).alter().existing().
|
|
33
|
+
constraint(i).drop().existing(),"getDeleteQuery"),f=p((t,n,i,l,r)=>{let a=t.table(
|
|
34
|
+
n).alter().existing().constraint(i);switch(r.type){case C.SchemaType.Enum:{let c=r.
|
|
35
|
+
options.map(({value:h})=>`${h}`);a.check({[l]:{isIn:c}});break}case C.SchemaType.
|
|
36
|
+
Boolean:case C.SchemaType.Number:case C.SchemaType.String:{a.check({[l]:{equal:r.
|
|
37
|
+
definitions?.value}});break}}return a},"getCreateQuery")})(j||={});var ee=require("@ez4/pgclient/library"),te=require("@ez4/schema"),W=require("@ez4/database");var w;(f=>{f.prepareCreate=p((m,t,n,i)=>{let l=[];for(let r in i){let a=i[r];if(d(
|
|
38
|
+
a))continue;let{[a.targetColumn]:c}=n.properties,h=A(t,r),x=!!(0,te.isNullishSchema)(
|
|
39
|
+
c);l.push({check:R(m,h),query:u(m,t,h,a,x).build()})}return l},"prepareCreate"),
|
|
40
|
+
f.prepareUpdate=p((m,t,n,i)=>{let l=[];for(let r in n){let a=n[r];if(d(a))continue;
|
|
41
|
+
let c=i[a.targetColumn]?.update,h=c?.optional??c?.nullable;if(h===void 0)continue;
|
|
42
|
+
let x=A(t,r);l.push({query:s(m,t,x).build()},{query:u(m,t,x,a,h).build()})}return l},
|
|
43
|
+
"prepareUpdate"),f.prepareRename=p((m,t,n,i)=>{let l=[];for(let r in i){let a=i[r];
|
|
44
|
+
if(d(a))continue;let c=A(t,r),h=A(n,r),x=m.table(n).alter().existing().constraint(
|
|
45
|
+
c).rename(h);l.push({check:R(m,h),query:x.build()})}return l},"prepareRename"),f.
|
|
46
|
+
prepareDelete=p((m,t,n)=>{let i=[];for(let l in n){let r=n[l];if(d(r))continue;let a=A(
|
|
47
|
+
t,l);i.push({query:s(m,t,a).build()})}return i},"prepareDelete");let d=p(m=>{let{
|
|
48
|
+
sourceIndex:t,targetIndex:n}=m;return!t||t===W.Index.Secondary||n===W.Index.Primary},
|
|
49
|
+
"isNotRealRelation"),s=p((m,t,n)=>m.table(t).alter().existing().constraint(n).drop().
|
|
50
|
+
existing(),"getDeleteQuery"),u=p((m,t,n,i,l)=>{let{sourceTable:r,sourceColumn:a,
|
|
51
|
+
targetColumn:c}=i,h=(0,ee.getTableName)(r),x=m.table(t).alter().existing().constraint(
|
|
52
|
+
n).foreign(c,h,[a]);return l?x.delete().null():x.delete().cascade(),x.update().cascade(),
|
|
53
|
+
x},"getCreateQuery")})(w||={});var E=require("@ez4/schema"),P=require("@ez4/database");var T;(s=>{s.prepareCreate=p((u,f,m,t,n)=>{let i={constraints:[],indexes:[]};for(let l in t){
|
|
54
|
+
let{columns:r,type:a}=t[l];switch(a){default:throw new Error("Unsupported index \
|
|
55
|
+
type.");case P.Index.Primary:{let c=U(f,l),h=u.table(f).alter().existing().constraint(
|
|
56
|
+
c).primary(r);i.constraints.push({check:R(u,c),query:h.build()});break}case P.Index.
|
|
57
|
+
Unique:{let c=v(f,l),h=u.table(f).alter().existing().constraint(c).unique(r);i.constraints.
|
|
58
|
+
push({check:R(u,c),query:h.build()});break}case P.Index.Secondary:{let c=M(f,l),
|
|
59
|
+
h=d(r,m),x=u.index(c).create(f,r).type(h).missing();n&&x.concurrent(),i.indexes.
|
|
60
|
+
push({query:x.build()});break}}}return i},"prepareCreate"),s.prepareUpdate=p((u,f,m,t,n,i,l)=>{
|
|
61
|
+
let r={constraints:[],indexes:[]};for(let a in i){let{update:c,create:h,remove:x}=i[a];
|
|
62
|
+
if(x||c){let b=(0,s.prepareDelete)(u,f,{[a]:t[a]});r.constraints.push(...b.constraints),
|
|
63
|
+
r.indexes.push(...b.indexes)}if(h||c){let b=(0,s.prepareCreate)(u,f,m,{[a]:n[a]},
|
|
64
|
+
l);r.constraints.push(...b.constraints),r.indexes.push(...b.indexes)}}return r},
|
|
65
|
+
"prepareUpdate"),s.prepareRename=p((u,f,m,t)=>{let n={constraints:[],indexes:[]};
|
|
66
|
+
for(let i in t){let{type:l}=t[i];switch(l){default:throw new Error("Unsupported \
|
|
67
|
+
index type.");case P.Index.Primary:{let r=U(f,i),a=U(m,i),c=u.table(m).alter().existing().
|
|
68
|
+
constraint(r).rename(a);n.constraints.push({check:R(u,a),query:c.build()});break}case P.Index.
|
|
69
|
+
Unique:{let r=v(f,i),a=v(m,i),c=u.table(m).alter().existing().constraint(r).rename(
|
|
70
|
+
a);n.constraints.push({check:R(u,a),query:c.build()});break}case P.Index.Secondary:{
|
|
71
|
+
let r=M(f,i),a=M(m,i),c=u.index(r).rename(a).existing();n.indexes.push({query:c.
|
|
72
|
+
build()});break}}}return n},"prepareRename"),s.prepareDelete=p((u,f,m)=>{let t={
|
|
73
|
+
constraints:[],indexes:[]};for(let n in m){let{type:i}=m[n];switch(i){default:throw new Error(
|
|
74
|
+
"Unsupported index type.");case P.Index.Primary:{let l=U(f,n),r=u.table(f).alter().
|
|
75
|
+
existing().constraint(l).drop().existing();t.constraints.push({query:r.build()});
|
|
76
|
+
break}case P.Index.Unique:{let l=v(f,n),r=u.table(f).alter().existing().constraint(
|
|
77
|
+
l).drop().existing();t.constraints.push({query:r.build()});break}case P.Index.Secondary:{
|
|
78
|
+
let l=M(f,n),r=u.index(l).drop().existing().concurrent();t.indexes.push({query:r.
|
|
79
|
+
build()});break}}}return t},"prepareDelete");let d=p((u,f)=>{if(u.length===1){let[
|
|
80
|
+
m]=u;switch(f.properties[m]?.type){case E.SchemaType.Object:case E.SchemaType.Union:case E.SchemaType.
|
|
81
|
+
Array:case E.SchemaType.Tuple:return"GIN"}}return"BTREE"},"getIndexType")})(T||=
|
|
82
|
+
{});var X=require("@ez4/database");var S=require("@ez4/schema"),ne=require("@ez4/utils");var $=p(e=>!!(e.nullable||e.optional),"isOptionalColumn"),z=p((e,o)=>{if((0,S.isScalarSchema)(
|
|
83
|
+
e)||(0,S.isObjectSchema)(e)||(0,S.isArraySchema)(e)||(0,S.isTupleSchema)(e)){let{
|
|
84
|
+
definitions:g}=e;switch(typeof g?.default){case"boolean":case"number":return`${g.
|
|
85
|
+
default}`;case"string":return`'${g.default}'`;case"object":return`'${JSON.stringify(
|
|
86
|
+
g.default)}'`}}if((0,S.isEnumSchema)(e)){let{definitions:g}=e;if(g?.default)return`\
|
|
87
|
+
'${g.default}'`}if((0,S.isStringSchema)(e)&&o)switch(e.format){case"date-time":case"\
|
|
88
|
+
date":case"time":return"now()";case"uuid":return"gen_random_uuid()"}if($(e))return"\
|
|
89
|
+
null"},"getColumnDefault"),Q=p((e,o)=>{switch(e.type){case S.SchemaType.Array:case S.SchemaType.
|
|
90
|
+
Object:case S.SchemaType.Reference:case S.SchemaType.Union:case S.SchemaType.Tuple:
|
|
91
|
+
return"jsonb";case S.SchemaType.Boolean:return"boolean";case S.SchemaType.Enum:return"\
|
|
92
|
+
text";case S.SchemaType.Number:return ge(e,o);case S.SchemaType.String:return fe(
|
|
93
|
+
e)}},"getColumnType"),ge=p((e,o)=>e.format==="integer"?o?"bigserial":"bigint":"d\
|
|
94
|
+
ecimal","getColumNumberType"),fe=p(e=>{switch(e.format){case"uuid":case"time":case"\
|
|
95
|
+
date":return e.format;case"date-time":return"timestamptz";default:let o=e.definitions?.
|
|
96
|
+
maxLength;return(0,ne.isAnyNumber)(o)?`varchar(${o})`:"text"}},"getColumnTextTyp\
|
|
97
|
+
e");var D;(d=>(d.prepareCreate=p((s,u,f,m)=>{let t=s.table(u).alter().existing();for(let n in m){
|
|
98
|
+
let i=m[n],r=f[n]?.type===X.Index.Primary,a=!$(i),c=Q(i,r),h=z(i,r);t.add(n,c,a,
|
|
99
|
+
h).missing()}return{query:t.build()}},"prepareCreate"),d.prepareUpdate=p((s,u,f,m,t)=>{
|
|
100
|
+
let n=[];for(let i in t){let{create:l,update:r,nested:a,remove:c}=t[i],h=f.properties[i],
|
|
101
|
+
b=m[i]?.type===X.Index.Primary,q=s.table(u).alter().existing().column(i);if(l){let N=l.
|
|
102
|
+
definitions?.default,O=l?.nullable;N!==void 0&&q.default(z(h,b)),O!==void 0&&q.optional(
|
|
103
|
+
O)}if(r||a){let N=a?.definitions?.update?.default,O=r?.nullable;r?.type!==void 0&&
|
|
104
|
+
q.type(Q(h,b)),N!==void 0&&q.default(z(h,b)),O!==void 0&&q.optional(O)}if(c){let N=c.
|
|
105
|
+
definitions?.default,O=c?.nullable;N!==void 0&&q.default(null),O!==void 0&&q.optional(
|
|
106
|
+
O)}q.empty||n.push({check:F(s,u,i),query:q.build()})}return n},"prepareUpdate"),
|
|
107
|
+
d.prepareRename=p((s,u,f)=>{let m=[];for(let t in f){let n=f[t],i=s.table(u).alter().
|
|
108
|
+
existing().rename(t,n);m.push({check:F(s,u,t),query:i.build()})}return m},"prepa\
|
|
109
|
+
reRename"),d.prepareDelete=p((s,u,f)=>{let m=s.table(u).alter().existing();for(let t in f)
|
|
110
|
+
m.drop(t).existing();return{query:m.build()}},"prepareDelete")))(D||={});var re=require("@ez4/database");var K;(y=>(y.prepareCreate=p((d,s,u,f)=>{let m=d.table(s).create().missing();for(let t in u.
|
|
111
|
+
properties){let n=u.properties[t],l=f[t]?.type===re.Index.Primary,r=!$(n),a=Q(n,
|
|
112
|
+
l),c=z(n,l);m.column(t,a,r,c).missing()}return{query:m.build()}},"prepareCreate"),
|
|
113
|
+
y.prepareRename=p((d,s,u)=>({query:d.table(s).rename(u).existing().build()}),"pr\
|
|
114
|
+
epareRename"),y.prepareDelete=p((d,s)=>({query:d.table(s).drop().existing().cascade().
|
|
115
|
+
build()}),"prepareDelete")))(K||={});var oe=p(e=>{let o=new L.SqlBuilder,g={tables:[],constraints:[],relations:[],indexes:[]};
|
|
116
|
+
for(let y in e){let{name:d,schema:s,indexes:u,relations:f}=e[y];g.tables.push(K.
|
|
117
|
+
prepareCreate(o,d,s,u)),g.constraints.push(...j.prepareCreate(o,d,s.properties)),
|
|
118
|
+
g.relations.push(...w.prepareCreate(o,d,s,f)),I(g,T.prepareCreate(o,d,s,u,!1))}return g},
|
|
119
|
+
"getCreateQueries"),ye=p((e,o)=>{let g=Y(e,o),y=new L.SqlBuilder,d={tables:[],constraints:[],
|
|
120
|
+
relations:[],indexes:[]};if(g.create&&I(d,oe(g.create)),g.rename)for(let s in g.
|
|
121
|
+
rename){let u=g.rename[s],f=e[u].indexes,m=e[u].relations,t=e[u].schema;d.tables.
|
|
122
|
+
push(K.prepareRename(y,s,u)),d.constraints.push(...j.prepareRenameTable(y,s,u,t.
|
|
123
|
+
properties)),d.relations.push(...w.prepareRename(y,s,u,m)),I(d,T.prepareRename(y,
|
|
124
|
+
s,u,f))}if(g.nested)for(let s in g.nested){let{nested:u}=g.nested[s];if(!u)continue;
|
|
125
|
+
let{schema:f,relations:m,indexes:t}=u,n=f?.nested?.properties,i=e[s].relations,l=o[s].
|
|
126
|
+
indexes,r=e[s].indexes,a=o[s].schema,c=e[s].schema;n?.create&&(d.tables.push(D.prepareCreate(
|
|
127
|
+
y,s,r,n.create)),d.constraints.push(...j.prepareCreate(y,s,n.create))),n?.nested&&
|
|
128
|
+
(d.tables.push(...D.prepareUpdate(y,s,c,r,n.nested)),d.constraints.push(...j.prepareUpdate(
|
|
129
|
+
y,s,c,a,n.nested)),d.relations.push(...w.prepareUpdate(y,s,i,n.nested))),n?.rename&&
|
|
130
|
+
(d.tables.push(...D.prepareRename(y,s,n.rename)),d.constraints.push(...j.prepareRenameColumns(
|
|
131
|
+
y,s,c.properties,n.rename))),n?.remove&&(d.tables.push(D.prepareDelete(y,s,n.remove)),
|
|
132
|
+
d.constraints.push(...j.prepareDelete(y,s,n.remove))),t?.create&&I(d,T.prepareCreate(
|
|
133
|
+
y,s,c,t.create,!0)),t?.nested&&I(d,T.prepareUpdate(y,s,c,l,r,t.nested,!0)),t?.remove&&
|
|
134
|
+
I(d,T.prepareDelete(y,s,t.remove)),m?.create&&d.relations.push(...w.prepareCreate(
|
|
135
|
+
y,s,c,m.create)),m?.remove&&d.relations.push(...w.prepareDelete(y,s,m.remove))}return g.
|
|
136
|
+
remove&&I(d,se(g.remove)),d},"getUpdateQueries"),se=p(e=>{let o=new L.SqlBuilder,
|
|
137
|
+
g={tables:[],constraints:[],relations:[],indexes:[]};for(let y in e){let{name:d}=e[y];
|
|
138
|
+
g.tables.push(K.prepareDelete(o,d))}return g},"getDeleteQueries"),I=p((e,o)=>{o.
|
|
139
|
+
indexes&&e.indexes.push(...o.indexes),o.constraints&&e.constraints.push(...o.constraints),
|
|
140
|
+
o.relations&&e.relations.push(...o.relations),o.tables&&e.tables.push(...o.tables)},
|
|
141
|
+
"combineQueries");0&&(module.exports={getCreateQueries,getDeleteQueries,getUpdateQueries});
|
|
134
142
|
//# sourceMappingURL=main.cjs.map
|
package/dist/main.mjs
CHANGED
|
@@ -1,128 +1,134 @@
|
|
|
1
|
-
var
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
"
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
definitions?.
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
t,
|
|
40
|
-
(t,
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
e,
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
(
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
for(let
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
build()}
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
(
|
|
101
|
-
|
|
102
|
-
"
|
|
103
|
-
|
|
104
|
-
l,r
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
push(...
|
|
111
|
-
|
|
112
|
-
n=
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
push(...
|
|
117
|
-
f
|
|
118
|
-
n
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
push(
|
|
125
|
-
t.
|
|
126
|
-
|
|
127
|
-
|
|
1
|
+
var te=Object.defineProperty;var m=(n,p)=>te(n,"name",{value:p,configurable:!0});import{SqlBuilder as V}from"@ez4/pgsql";import{deepEqual as F,deepCompareObject as ne,isAnyObject as L}from"@ez4/utils";
|
|
2
|
+
import{isTableMetadata as G}from"@ez4/pgclient/library";import{isAnySchema as J}from"@ez4/schema";var H=m((n,p)=>ne(n,p,{onRename:m((f,y)=>!L(f)||!L(y)?!1:G(f)&&G(y)?re(f.schema,
|
|
3
|
+
y.schema):J(f)&&J(y)?oe(f,y):!1,"onRename")}),"getTableRepositoryChanges"),re=m(
|
|
4
|
+
(n,p)=>F(Object.keys(n.properties),Object.keys(p.properties)),"canRenameTable"),
|
|
5
|
+
oe=m((n,p)=>F(n,p,{depth:1,include:{type:!0,definitions:!0,nullable:!0,format:!0}}),
|
|
6
|
+
"canRenameColumn");import{isEnumSchema as W,isScalarSchema as X,SchemaType as $}from"@ez4/schema";import{
|
|
7
|
+
isNotNullish as Y}from"@ez4/utils";var q=m((n,p)=>{let[f]=n.select().rawColumn("1").from("pg_constraint").where({conname:n.
|
|
8
|
+
rawString(p)}).build();return f},"getCheckConstraintQuery"),K=m((n,p,f)=>{let[y]=n.
|
|
9
|
+
select().rawColumn("1").where({NOT:{exists:n.select().from(n.rawValue("informati\
|
|
10
|
+
on_schema.columns")).rawColumn("1").where({column_name:n.rawString(f),table_name:n.
|
|
11
|
+
rawString(p)})}}).build();return y},"getCheckColumnQuery");import{toSnakeCase as se}from"@ez4/utils";var z=m((n,p)=>`${v(n,p)}_pk`,"getPrimaryKeyName"),D=m((n,p)=>`${v(n,p)}_uk`,"ge\
|
|
12
|
+
tUniqueKeyName"),U=m((n,p)=>`${v(n,p)}_sk`,"getSecondaryKeyName"),T=m((n,p)=>`${v(
|
|
13
|
+
n,p)}_fk`,"getRelationName"),C=m((n,p)=>`${v(n,p)}_ck`,"getConstraintName"),v=m(
|
|
14
|
+
(n,p)=>`${n}_${se(p.replaceAll(":","_"))}`,"getName");var O;(c=>{c.prepareCreate=m((e,t,s)=>{let l=[];for(let r in s){let i=s[r];if(W(
|
|
15
|
+
i)||X(i)&&Y(i.definitions?.value)){let a=C(t,r);l.push({check:q(e,a),query:g(e,t,
|
|
16
|
+
a,r,i).build()})}}return l},"prepareCreate"),c.prepareUpdate=m((e,t,s,l,r)=>{let i=[];
|
|
17
|
+
for(let a in r){let{update:h,create:x,remove:S}=r[a];if(S||h){let b=l.properties[a];
|
|
18
|
+
if(o(b)){let R=C(t,a);i.push({query:u(e,t,R).build()})}}if(x||h){let b=s.properties[a];
|
|
19
|
+
if(o(b)){let R=C(t,a);i.push({check:q(e,R),query:g(e,t,R,a,b).build()})}}}return i},
|
|
20
|
+
"prepareUpdate"),c.prepareRenameTable=m((e,t,s,l)=>{let r=[];for(let i in l){let a=l[i];
|
|
21
|
+
if(o(a)){let h=C(t,i),x=C(s,i),S=e.table(s).alter().existing().constraint(h).rename(
|
|
22
|
+
x);r.push({check:q(e,x),query:S.build()})}}return r},"prepareRenameTable"),c.prepareRenameColumns=
|
|
23
|
+
m((e,t,s,l)=>{let r=[];for(let i in l){let a=l[i],h=s[a];if(o(h)){let x=C(t,i),S=C(
|
|
24
|
+
t,a),b=e.table(t).alter().existing().constraint(x).rename(S);r.push({check:q(e,S),
|
|
25
|
+
query:b.build()})}}return r},"prepareRenameColumns"),c.prepareDelete=m((e,t,s)=>{
|
|
26
|
+
let l=[];for(let r in s){let i=s[r];if(o(i)){let a=C(t,r);l.push({query:u(e,t,a).
|
|
27
|
+
build()})}}return l},"prepareDelete");let o=m(e=>W(e)||X(e)&&Y(e.definitions?.value),
|
|
28
|
+
"isConstrainedSchema"),u=m((e,t,s)=>e.table(t).alter().existing().constraint(s).
|
|
29
|
+
drop().existing(),"getDeleteQuery"),g=m((e,t,s,l,r)=>{let i=e.table(t).alter().existing().
|
|
30
|
+
constraint(s);switch(r.type){case $.Enum:{let a=r.options.map(({value:h})=>`${h}`);
|
|
31
|
+
i.check({[l]:{isIn:a}});break}case $.Boolean:case $.Number:case $.String:{i.check(
|
|
32
|
+
{[l]:{equal:r.definitions?.value}});break}}return i},"getCreateQuery")})(O||={});import{getTableName as ie}from"@ez4/pgclient/library";import{isNullishSchema as ae}from"@ez4/schema";
|
|
33
|
+
import{Index as Z}from"@ez4/database";var B;(g=>{g.prepareCreate=m((c,e,t,s)=>{let l=[];for(let r in s){let i=s[r];if(d(
|
|
34
|
+
i))continue;let{[i.targetColumn]:a}=t.properties,h=T(e,r),x=!!ae(a);l.push({check:q(
|
|
35
|
+
c,h),query:u(c,e,h,i,x).build()})}return l},"prepareCreate"),g.prepareUpdate=m((c,e,t,s)=>{
|
|
36
|
+
let l=[];for(let r in t){let i=t[r];if(d(i))continue;let a=s[i.targetColumn]?.update,
|
|
37
|
+
h=a?.optional??a?.nullable;if(h===void 0)continue;let x=T(e,r);l.push({query:o(c,
|
|
38
|
+
e,x).build()},{query:u(c,e,x,i,h).build()})}return l},"prepareUpdate"),g.prepareRename=
|
|
39
|
+
m((c,e,t,s)=>{let l=[];for(let r in s){let i=s[r];if(d(i))continue;let a=T(e,r),
|
|
40
|
+
h=T(t,r),x=c.table(t).alter().existing().constraint(a).rename(h);l.push({check:q(
|
|
41
|
+
c,h),query:x.build()})}return l},"prepareRename"),g.prepareDelete=m((c,e,t)=>{let s=[];
|
|
42
|
+
for(let l in t){let r=t[l];if(d(r))continue;let i=T(e,l);s.push({query:o(c,e,i).
|
|
43
|
+
build()})}return s},"prepareDelete");let d=m(c=>{let{sourceIndex:e,targetIndex:t}=c;
|
|
44
|
+
return!e||e===Z.Secondary||t===Z.Primary},"isNotRealRelation"),o=m((c,e,t)=>c.table(
|
|
45
|
+
e).alter().existing().constraint(t).drop().existing(),"getDeleteQuery"),u=m((c,e,t,s,l)=>{
|
|
46
|
+
let{sourceTable:r,sourceColumn:i,targetColumn:a}=s,h=ie(r),x=c.table(e).alter().
|
|
47
|
+
existing().constraint(t).foreign(a,h,[i]);return l?x.delete().null():x.delete().
|
|
48
|
+
cascade(),x.update().cascade(),x},"getCreateQuery")})(B||={});import{SchemaType as Q}from"@ez4/schema";import{Index as N}from"@ez4/database";var j;(o=>{o.prepareCreate=m((u,g,c,e,t)=>{let s={constraints:[],indexes:[]};for(let l in e){
|
|
49
|
+
let{columns:r,type:i}=e[l];switch(i){default:throw new Error("Unsupported index \
|
|
50
|
+
type.");case N.Primary:{let a=z(g,l),h=u.table(g).alter().existing().constraint(
|
|
51
|
+
a).primary(r);s.constraints.push({check:q(u,a),query:h.build()});break}case N.Unique:{
|
|
52
|
+
let a=D(g,l),h=u.table(g).alter().existing().constraint(a).unique(r);s.constraints.
|
|
53
|
+
push({check:q(u,a),query:h.build()});break}case N.Secondary:{let a=U(g,l),h=d(r,
|
|
54
|
+
c),x=u.index(a).create(g,r).type(h).missing();t&&x.concurrent(),s.indexes.push({
|
|
55
|
+
query:x.build()});break}}}return s},"prepareCreate"),o.prepareUpdate=m((u,g,c,e,t,s,l)=>{
|
|
56
|
+
let r={constraints:[],indexes:[]};for(let i in s){let{update:a,create:h,remove:x}=s[i];
|
|
57
|
+
if(x||a){let S=(0,o.prepareDelete)(u,g,{[i]:e[i]});r.constraints.push(...S.constraints),
|
|
58
|
+
r.indexes.push(...S.indexes)}if(h||a){let S=(0,o.prepareCreate)(u,g,c,{[i]:t[i]},
|
|
59
|
+
l);r.constraints.push(...S.constraints),r.indexes.push(...S.indexes)}}return r},
|
|
60
|
+
"prepareUpdate"),o.prepareRename=m((u,g,c,e)=>{let t={constraints:[],indexes:[]};
|
|
61
|
+
for(let s in e){let{type:l}=e[s];switch(l){default:throw new Error("Unsupported \
|
|
62
|
+
index type.");case N.Primary:{let r=z(g,s),i=z(c,s),a=u.table(c).alter().existing().
|
|
63
|
+
constraint(r).rename(i);t.constraints.push({check:q(u,i),query:a.build()});break}case N.
|
|
64
|
+
Unique:{let r=D(g,s),i=D(c,s),a=u.table(c).alter().existing().constraint(r).rename(
|
|
65
|
+
i);t.constraints.push({check:q(u,i),query:a.build()});break}case N.Secondary:{let r=U(
|
|
66
|
+
g,s),i=U(c,s),a=u.index(r).rename(i).existing();t.indexes.push({query:a.build()});
|
|
67
|
+
break}}}return t},"prepareRename"),o.prepareDelete=m((u,g,c)=>{let e={constraints:[],
|
|
68
|
+
indexes:[]};for(let t in c){let{type:s}=c[t];switch(s){default:throw new Error("\
|
|
69
|
+
Unsupported index type.");case N.Primary:{let l=z(g,t),r=u.table(g).alter().existing().
|
|
70
|
+
constraint(l).drop().existing();e.constraints.push({query:r.build()});break}case N.
|
|
71
|
+
Unique:{let l=D(g,t),r=u.table(g).alter().existing().constraint(l).drop().existing();
|
|
72
|
+
e.constraints.push({query:r.build()});break}case N.Secondary:{let l=U(g,t),r=u.index(
|
|
73
|
+
l).drop().existing().concurrent();e.indexes.push({query:r.build()});break}}}return e},
|
|
74
|
+
"prepareDelete");let d=m((u,g)=>{if(u.length===1){let[c]=u;switch(g.properties[c]?.
|
|
75
|
+
type){case Q.Object:case Q.Union:case Q.Array:case Q.Tuple:return"GIN"}}return"B\
|
|
76
|
+
TREE"},"getIndexType")})(j||={});import{Index as ee}from"@ez4/database";import{isArraySchema as ce,isEnumSchema as me,isObjectSchema as pe,isScalarSchema as ue,
|
|
77
|
+
isStringSchema as le,isTupleSchema as de,SchemaType as P}from"@ez4/schema";import{
|
|
78
|
+
isAnyNumber as ge}from"@ez4/utils";var M=m(n=>!!(n.nullable||n.optional),"isOptionalColumn"),I=m((n,p)=>{if(ue(n)||
|
|
79
|
+
pe(n)||ce(n)||de(n)){let{definitions:f}=n;switch(typeof f?.default){case"boolean":case"\
|
|
80
|
+
number":return`${f.default}`;case"string":return`'${f.default}'`;case"object":return`\
|
|
81
|
+
'${JSON.stringify(f.default)}'`}}if(me(n)){let{definitions:f}=n;if(f?.default)return`\
|
|
82
|
+
'${f.default}'`}if(le(n)&&p)switch(n.format){case"date-time":case"date":case"tim\
|
|
83
|
+
e":return"now()";case"uuid":return"gen_random_uuid()"}if(M(n))return"null"},"get\
|
|
84
|
+
ColumnDefault"),_=m((n,p)=>{switch(n.type){case P.Array:case P.Object:case P.Reference:case P.
|
|
85
|
+
Union:case P.Tuple:return"jsonb";case P.Boolean:return"boolean";case P.Enum:return"\
|
|
86
|
+
text";case P.Number:return fe(n,p);case P.String:return ye(n)}},"getColumnType"),
|
|
87
|
+
fe=m((n,p)=>n.format==="integer"?p?"bigserial":"bigint":"decimal","getColumNumbe\
|
|
88
|
+
rType"),ye=m(n=>{switch(n.format){case"uuid":case"time":case"date":return n.format;case"\
|
|
89
|
+
date-time":return"timestamptz";default:let p=n.definitions?.maxLength;return ge(
|
|
90
|
+
p)?`varchar(${p})`:"text"}},"getColumnTextType");var A;(d=>(d.prepareCreate=m((o,u,g,c)=>{let e=o.table(u).alter().existing();for(let t in c){
|
|
91
|
+
let s=c[t],r=g[t]?.type===ee.Primary,i=!M(s),a=_(s,r),h=I(s,r);e.add(t,a,i,h).missing()}
|
|
92
|
+
return{query:e.build()}},"prepareCreate"),d.prepareUpdate=m((o,u,g,c,e)=>{let t=[];
|
|
93
|
+
for(let s in e){let{create:l,update:r,nested:i,remove:a}=e[s],h=g.properties[s],
|
|
94
|
+
S=c[s]?.type===ee.Primary,b=o.table(u).alter().existing().column(s);if(l){let R=l.
|
|
95
|
+
definitions?.default,k=l?.nullable;R!==void 0&&b.default(I(h,S)),k!==void 0&&b.optional(
|
|
96
|
+
k)}if(r||i){let R=i?.definitions?.update?.default,k=r?.nullable;r?.type!==void 0&&
|
|
97
|
+
b.type(_(h,S)),R!==void 0&&b.default(I(h,S)),k!==void 0&&b.optional(k)}if(a){let R=a.
|
|
98
|
+
definitions?.default,k=a?.nullable;R!==void 0&&b.default(null),k!==void 0&&b.optional(
|
|
99
|
+
k)}b.empty||t.push({check:K(o,u,s),query:b.build()})}return t},"prepareUpdate"),
|
|
100
|
+
d.prepareRename=m((o,u,g)=>{let c=[];for(let e in g){let t=g[e],s=o.table(u).alter().
|
|
101
|
+
existing().rename(e,t);c.push({check:K(o,u,e),query:s.build()})}return c},"prepa\
|
|
102
|
+
reRename"),d.prepareDelete=m((o,u,g)=>{let c=o.table(u).alter().existing();for(let e in g)
|
|
103
|
+
c.drop(e).existing();return{query:c.build()}},"prepareDelete")))(A||={});import{Index as he}from"@ez4/database";var E;(y=>(y.prepareCreate=m((d,o,u,g)=>{let c=d.table(o).create().missing();for(let e in u.
|
|
104
|
+
properties){let t=u.properties[e],l=g[e]?.type===he.Primary,r=!M(t),i=_(t,l),a=I(
|
|
105
|
+
t,l);c.column(e,i,r,a).missing()}return{query:c.build()}},"prepareCreate"),y.prepareRename=
|
|
106
|
+
m((d,o,u)=>({query:d.table(o).rename(u).existing().build()}),"prepareRename"),y.
|
|
107
|
+
prepareDelete=m((d,o)=>({query:d.table(o).drop().existing().cascade().build()}),
|
|
108
|
+
"prepareDelete")))(E||={});var xe=m(n=>{let p=new V,f={tables:[],constraints:[],relations:[],indexes:[]};for(let y in n){
|
|
109
|
+
let{name:d,schema:o,indexes:u,relations:g}=n[y];f.tables.push(E.prepareCreate(p,
|
|
110
|
+
d,o,u)),f.constraints.push(...O.prepareCreate(p,d,o.properties)),f.relations.push(
|
|
111
|
+
...B.prepareCreate(p,d,o,g)),w(f,j.prepareCreate(p,d,o,u,!1))}return f},"getCrea\
|
|
112
|
+
teQueries"),ht=m((n,p)=>{let f=H(n,p),y=new V,d={tables:[],constraints:[],relations:[],
|
|
113
|
+
indexes:[]};if(f.create&&w(d,xe(f.create)),f.rename)for(let o in f.rename){let u=f.
|
|
114
|
+
rename[o],g=n[u].indexes,c=n[u].relations,e=n[u].schema;d.tables.push(E.prepareRename(
|
|
115
|
+
y,o,u)),d.constraints.push(...O.prepareRenameTable(y,o,u,e.properties)),d.relations.
|
|
116
|
+
push(...B.prepareRename(y,o,u,c)),w(d,j.prepareRename(y,o,u,g))}if(f.nested)for(let o in f.
|
|
117
|
+
nested){let{nested:u}=f.nested[o];if(!u)continue;let{schema:g,relations:c,indexes:e}=u,
|
|
118
|
+
t=g?.nested?.properties,s=n[o].relations,l=p[o].indexes,r=n[o].indexes,i=p[o].schema,
|
|
119
|
+
a=n[o].schema;t?.create&&(d.tables.push(A.prepareCreate(y,o,r,t.create)),d.constraints.
|
|
120
|
+
push(...O.prepareCreate(y,o,t.create))),t?.nested&&(d.tables.push(...A.prepareUpdate(
|
|
121
|
+
y,o,a,r,t.nested)),d.constraints.push(...O.prepareUpdate(y,o,a,i,t.nested)),d.relations.
|
|
122
|
+
push(...B.prepareUpdate(y,o,s,t.nested))),t?.rename&&(d.tables.push(...A.prepareRename(
|
|
123
|
+
y,o,t.rename)),d.constraints.push(...O.prepareRenameColumns(y,o,a.properties,t.rename))),
|
|
124
|
+
t?.remove&&(d.tables.push(A.prepareDelete(y,o,t.remove)),d.constraints.push(...O.
|
|
125
|
+
prepareDelete(y,o,t.remove))),e?.create&&w(d,j.prepareCreate(y,o,a,e.create,!0)),
|
|
126
|
+
e?.nested&&w(d,j.prepareUpdate(y,o,a,l,r,e.nested,!0)),e?.remove&&w(d,j.prepareDelete(
|
|
127
|
+
y,o,e.remove)),c?.create&&d.relations.push(...B.prepareCreate(y,o,a,c.create)),c?.
|
|
128
|
+
remove&&d.relations.push(...B.prepareDelete(y,o,c.remove))}return f.remove&&w(d,
|
|
129
|
+
Se(f.remove)),d},"getUpdateQueries"),Se=m(n=>{let p=new V,f={tables:[],constraints:[],
|
|
130
|
+
relations:[],indexes:[]};for(let y in n){let{name:d}=n[y];f.tables.push(E.prepareDelete(
|
|
131
|
+
p,d))}return f},"getDeleteQueries"),w=m((n,p)=>{p.indexes&&n.indexes.push(...p.indexes),
|
|
132
|
+
p.constraints&&n.constraints.push(...p.constraints),p.relations&&n.relations.push(
|
|
133
|
+
...p.relations),p.tables&&n.tables.push(...p.tables)},"combineQueries");export{xe as getCreateQueries,Se as getDeleteQueries,ht as getUpdateQueries};
|
|
128
134
|
//# sourceMappingURL=main.mjs.map
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import type { PgIndexRepository } from '@ez4/pgclient/library';
|
|
2
|
+
import type { ObjectComparison } from '@ez4/utils';
|
|
2
3
|
import type { ObjectSchema } from '@ez4/schema';
|
|
3
4
|
import type { SqlBuilder } from '@ez4/pgsql';
|
|
4
5
|
import type { PgMigrationQueries } from '../types/query';
|
|
5
6
|
type IndexMigrationQueries = Pick<PgMigrationQueries, 'constraints' | 'indexes'>;
|
|
6
7
|
export declare namespace IndexQueries {
|
|
7
8
|
const prepareCreate: (builder: SqlBuilder, table: string, schema: ObjectSchema, indexes: PgIndexRepository, concurrent: boolean) => IndexMigrationQueries;
|
|
9
|
+
const prepareUpdate: (builder: SqlBuilder, table: string, schema: ObjectSchema, sourceIndexes: PgIndexRepository, targetIndexes: PgIndexRepository, changes: Record<string, ObjectComparison>, concurrent: boolean) => IndexMigrationQueries;
|
|
8
10
|
const prepareRename: (builder: SqlBuilder, fromTable: string, toTable: string, indexes: PgIndexRepository) => IndexMigrationQueries;
|
|
9
11
|
const prepareDelete: (builder: SqlBuilder, table: string, indexes: PgIndexRepository) => IndexMigrationQueries;
|
|
10
12
|
}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ez4/pgmigration",
|
|
3
3
|
"description": "EZ4: A PostgreSQL migration library",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.40.0",
|
|
5
5
|
"author": "Silas B.",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"type": "module",
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
],
|
|
36
36
|
"scripts": {
|
|
37
37
|
"lint": "eslint --cache",
|
|
38
|
-
"clean": "rm -
|
|
38
|
+
"clean": "rm -rf dist/* *.tsbuildinfo .eslintcache",
|
|
39
39
|
"build": "tsc && node tools/bundler.mjs",
|
|
40
40
|
"test": "npm run build && tsc -p tsconfig.test.json && ez4 test",
|
|
41
41
|
"local:publish": "npm run build && npm run clean:registry && npm publish --registry http://localhost:4873",
|
|
@@ -43,10 +43,10 @@
|
|
|
43
43
|
"live:publish": "npm run build && npm publish --access public"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@ez4/database": "^0.
|
|
47
|
-
"@ez4/pgsql": "^0.
|
|
48
|
-
"@ez4/pgclient": "^0.
|
|
49
|
-
"@ez4/schema": "^0.
|
|
50
|
-
"@ez4/utils": "^0.
|
|
46
|
+
"@ez4/database": "^0.40.0",
|
|
47
|
+
"@ez4/pgsql": "^0.40.0",
|
|
48
|
+
"@ez4/pgclient": "^0.40.0",
|
|
49
|
+
"@ez4/schema": "^0.40.0",
|
|
50
|
+
"@ez4/utils": "^0.40.0"
|
|
51
51
|
}
|
|
52
52
|
}
|