@ez4/pgmigration 0.52.0 → 0.52.1
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 +1 -1
- package/dist/library.mjs +1 -1
- package/dist/main.cjs +1 -1
- package/dist/main.mjs +1 -1
- package/package.json +1 -1
package/dist/library.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var U=Object.defineProperty;var ee=Object.getOwnPropertyDescriptor;var te=Object.getOwnPropertyNames;var ne=Object.prototype.hasOwnProperty;var r=(e,o)=>U(e,"name",{value:o,configurable:!0});var re=(e,o)=>{for(var d in o)U(e,d,{get:o[d],enumerable:!0})},oe=(e,o,d,y)=>{if(o&&typeof o=="object"||typeof o=="function")for(let g of te(o))!ne.call(e,g)&&g!==d&&U(e,g,{get:()=>o[g],enumerable:!(y=ee(o,g))||y.enumerable});return e};var ie=e=>oe(U({},"__esModule",{value:!0}),e);var le={};re(le,{ColumnQuery:()=>Q,DatabaseQueries:()=>F,IndexQueries:()=>W,RelationQuery:()=>Z,TableQuery:()=>H,getTableRepositoryChanges:()=>se});module.exports=ie(le);var R=require("@ez4/utils"),I=require("@ez4/pgclient/library"),E=require("@ez4/schema");var se=r((e,o)=>(0,R.deepCompareObject)(e,o,{onCompareName:r((d,y)=>{let g=new Set((0,R.toSnakeCase)(d).split("_")),x=new Set((0,R.toSnakeCase)(y).split("_"));for(let h of x)if(h.length>1&&g.has(h))return!0;return!1},"onCompareName"),onRename:r((d,y)=>!(0,R.isAnyObject)(d)||!(0,R.isAnyObject)(y)?!1:(0,I.isTableMetadata)(d)&&(0,I.isTableMetadata)(y)?ae(d.schema,y.schema):(0,I.isTableIndex)(d)&&(0,I.isTableIndex)(y)?ce(d,y):(0,E.isAnySchema)(d)&&(0,E.isAnySchema)(y)?me(d,y):!1,"onRename")}),"getTableRepositoryChanges"),ae=r((e,o)=>(0,R.deepEqual)(Object.keys(e.properties),Object.keys(o.properties)),"canRenameTable"),ce=r((e,o)=>e.type===o.type,"canRenameIndex"),me=r((e,o)=>(0,R.deepEqual)(e,o,{depth:1,include:{type:!0,definitions:!0,nullable:!0,format:!0}}),"canRenameColumn");var V=require("@ez4/pgsql");var K=r((e,o)=>{let[d]=e.select().rawColumn(1).from("pg_database").where({datname:e.rawString(o)}).build();return d},"getCheckDatabaseQuery"),N=r((e,o)=>{let[d]=e.select().rawColumn(1).from("pg_constraint").where({conname:e.rawString(o)}).build();return d},"getCheckConstraintQuery"),$=r((e,o,d)=>{let[y]=e.select().rawColumn(1).where({NOT:{exists:e.select().from(e.rawValue("information_schema.columns")).rawColumn(1).where({column_name:e.rawString(d),table_name:e.rawString(o)})}}).build();return y},"getCheckColumnQuery");var F;(d=>(d.prepareCreate=r(y=>{let g=new V.SqlBuilder;return{check:K(g,y),query:`CREATE DATABASE "${y}"`}},"prepareCreate"),d.prepareDelete=r(y=>({query:`DROP DATABASE IF EXISTS "${y}" WITH (FORCE)`}),"prepareDelete")))(F||={});var G=require("@ez4/database");var S=require("@ez4/schema"),L=require("@ez4/utils");var A=r(e=>!!(e.nullable||e.optional),"isOptionalColumn"),T=r((e,o)=>{if((0,S.isScalarSchema)(e)||(0,S.isObjectSchema)(e)||(0,S.isArraySchema)(e)||(0,S.isTupleSchema)(e)){let{definitions:d}=e;switch(typeof d?.default){case"boolean":case"number":return`${d.default}`;case"string":return`'${d.default}'`;case"object":return`'${JSON.stringify(d.default)}'`}}if((0,S.isEnumSchema)(e)){let{definitions:d}=e;if(d?.default)return`'${d.default}'`}if((0,S.isStringSchema)(e)&&o)switch(e.format){case"date-time":case"date":case"time":return"now()";case"uuid":return"gen_random_uuid()"}if(A(e))return"null"},"getColumnDefault"),z=r((e,o)=>{switch(e.type){case S.SchemaType.Array:case S.SchemaType.Object:case S.SchemaType.Reference:case S.SchemaType.Union:case S.SchemaType.Tuple:return"jsonb";case S.SchemaType.Boolean:return"boolean";case S.SchemaType.Enum:return"text";case S.SchemaType.Number:return ue(e,o);case S.SchemaType.String:return pe(e)}},"getColumnType"),ue=r((e,o)=>e.format==="integer"?o?"bigserial":"bigint":"decimal","getColumNumberType"),pe=r(e=>{switch(e.format){case"uuid":case"time":case"date":return e.format;case"date-time":return"timestamptz";default:let o=e.definitions?.maxLength;return(0,L.isAnyNumber)(o)?`varchar(${o})`:"text"}},"getColumnTextType");var H;(y=>(y.prepareCreate=r((g,x,h,f)=>{let n=g.table(x).create().missing();for(let t in h.properties){let i=h.properties[t],c=f[t]?.type===G.Index.Primary,l=!A(i),s=z(i,c),u=T(i,c);n.column(t,s,l,u).missing()}return{query:n.build()}},"prepareCreate"),y.prepareRename=r((g,x,h)=>({query:g.table(x).rename(h).existing().build()}),"prepareRename"),y.prepareDelete=r((g,x)=>({query:g.table(x).drop().existing().cascade().build()}),"prepareDelete")))(H||={});var _=require("@ez4/schema"),C=require("@ez4/database");var J=require("@ez4/utils");var P=r((e,o)=>`${D(e,o)}_pk`,"getPrimaryKeyName"),k=r((e,o)=>`${D(e,o)}_uk`,"getUniqueKeyName"),O=r((e,o)=>`${D(e,o)}_sk`,"getSecondaryKeyName"),B=r((e,o)=>`${D(e,o)}_fk`,"getRelationName");var D=r((e,o)=>`${e}_${(0,J.toSnakeCase)(o.replaceAll(":","_"))}`,"getName");var W;(f=>{f.prepareCreate=r((n,t,i,a)=>{let c={constraints:[],validations:[],indexes:[]};for(let l in a){let{columns:s,type:u,name:m}=a[l];switch(u){default:throw new Error("Unsupported index type.");case C.Index.Primary:{let p=P(t,m);c.constraints.push({check:N(n,p),query:n.table(t).alter().existing().constraint(p).primary(s).build()});break}case C.Index.Unique:{let p=k(t,m),q=h(s,i);c.indexes.push({query:n.index(p).create(t,s).type(q).unique().concurrent().missing().build()}),c.validations.push({query:(0,f.getValidationQuery)(n,p),name:p});break}case C.Index.Secondary:{let p=O(t,m),q=h(s,i);c.indexes.push({query:n.index(p).create(t,s).type(q).concurrent().missing().build()}),c.validations.push({query:(0,f.getValidationQuery)(n,p),name:p});break}}}return c},"prepareCreate"),f.prepareUpdate=r((n,t,i,a,c,l)=>{let s={constraints:[],validations:[],indexes:[]};for(let u in l){let{update:m,create:p,remove:q}=l[u];if(q||m){let b=(0,f.prepareDelete)(n,t,{[u]:a[u]});s.constraints.push(...b.constraints),s.indexes.push(...b.indexes)}if(p||m){let b=(0,f.prepareCreate)(n,t,i,{[u]:c[u]});s.constraints.push(...b.constraints),s.indexes.push(...b.indexes)}}return s},"prepareUpdate"),f.prepareRenameTable=r((n,t,i,a)=>{let c={validations:[],constraints:[],indexes:[]};for(let l in a){let{type:s,name:u}=a[l];switch(s){default:throw new Error("Unsupported index type.");case C.Index.Primary:{let m=P(t,u),p=P(i,u);c.constraints.push({check:N(n,p),query:n.table(i).alter().existing().constraint(m).rename(p).build()});break}case C.Index.Unique:{let m=k(t,u),p=k(i,u);c.indexes.push({query:n.index(m).rename(p).existing().build()});break}case C.Index.Secondary:{let m=O(t,u),p=O(i,u);c.indexes.push({query:n.index(m).rename(p).existing().build()});break}}}return c},"prepareRenameTable"),f.prepareRenameColumns=r((n,t,i,a)=>{let c={validations:[],constraints:[],indexes:[]};for(let l in a){let s=a[l],{type:u}=i[s];switch(u){default:throw new Error("Unsupported index type.");case C.Index.Primary:{let m=P(t,l),p=P(t,s);c.constraints.push({check:N(n,p),query:n.table(t).alter().existing().constraint(m).rename(p).build()});break}case C.Index.Unique:{let m=k(t,l),p=k(t,s);c.indexes.push({query:n.index(p).rename(m).existing().build()});break}case C.Index.Secondary:{let m=O(t,l),p=O(t,s);c.indexes.push({query:n.index(m).rename(p).existing().build()});break}}}return c},"prepareRenameColumns"),f.prepareDelete=r((n,t,i)=>{let a={validations:[],constraints:[],indexes:[]};for(let c in i){let{type:l,name:s}=i[c];switch(l){default:throw new Error("Unsupported index type.");case C.Index.Primary:{let u=P(t,s),m=n.table(t).alter().existing().constraint(u).drop().existing();a.constraints.push({query:m.build()});break}case C.Index.Unique:{let u=k(t,s),m=n.index(u).drop().existing().concurrent();a.indexes.push({query:m.build()});break}case C.Index.Secondary:{let u=O(t,s),m=n.index(u).drop().existing().concurrent();a.indexes.push({query:m.build()});break}}}return a},"prepareDelete"),f.getValidationQuery=r((n,t)=>{let[i]=n.select().rawColumn(1).from("pg_index").where({indexrelid:n.rawValue(`${n.rawString(t).build()}::regclass`),indisvalid:n.rawValue("false"),indisready:n.rawValue("true")}).build();return i},"getValidationQuery");let h=r((n,t)=>{if(n.length===1){let[i]=n;switch(t.properties[i]?.type){case _.SchemaType.Object:case _.SchemaType.Union:case _.SchemaType.Array:case _.SchemaType.Tuple:return"GIN"}}return"BTREE"},"getIndexType")})(W||={});var X=require("@ez4/pgclient/utils"),Y=require("@ez4/schema"),v=require("@ez4/database");var Z;(f=>{f.prepareCreate=r((n,t,i,a)=>{let c=[];for(let l in a){let s=a[l];if(g(s))continue;let{[s.targetColumn]:u}=i.properties,m=B(t,l),p=!!(0,Y.isNullishSchema)(u);c.push({check:N(n,m),query:h(n,t,m,s,p).build()})}return c},"prepareCreate"),f.prepareUpdate=r((n,t,i,a)=>{let c=[];for(let l in i){let s=i[l];if(g(s))continue;let u=a[s.targetColumn]?.update,m=u?.optional??u?.nullable;if(m===void 0)continue;let p=B(t,l);c.push({query:x(n,t,p).build()},{query:h(n,t,p,s,m).build()})}return c},"prepareUpdate"),f.prepareRename=r((n,t,i,a)=>{let c=[];for(let l in a){let s=a[l];if(g(s))continue;let u=B(t,l),m=B(i,l),p=n.table(i).alter().existing().constraint(u).rename(m);c.push({check:N(n,m),query:p.build()})}return c},"prepareRename"),f.prepareDelete=r((n,t,i)=>{let a=[];for(let c in i){let l=i[c];if(g(l))continue;let s=B(t,c);a.push({query:x(n,t,s).build()})}return a},"prepareDelete");let g=r(n=>{let{sourceIndex:t,targetIndex:i}=n;return!t||t===v.Index.Secondary||i===v.Index.Primary},"isNotRealRelation"),x=r((n,t,i)=>n.table(t).alter().existing().constraint(i).drop().existing(),"getDeleteQuery"),h=r((n,t,i,a,c)=>{let{sourceTable:l,sourceColumn:s,targetColumn:u}=a,m=(0,X.getTableName)(l),p=n.table(t).alter().existing().constraint(i),q=p.foreign(u,m,[s]).validate(!1);return c?q.delete().null():q.delete().cascade(),q.update().cascade(),p},"getCreateQuery")})(Z||={});var M=require("@ez4/database");var Q;(g=>(g.prepareCreate=r((x,h,f,n)=>{let t=x.table(h).alter().existing();for(let i in n){let a=n[i],l=f[i]?.type===M.Index.Primary,s=!A(a),u=z(a,l),m=T(a,l);t.add(i,u,s,m).missing()}return{query:t.build()}},"prepareCreate"),g.prepareUpdate=r((x,h,f,n,t)=>{let i=[];for(let a in t){let{create:c,update:l,nested:s,remove:u}=t[a],m=f.properties[a],q=n[a]?.type===M.Index.Primary,b=x.table(h).alter().existing().column(a);if(c){let j=c.definitions?.default,w=c?.nullable;j!==void 0&&b.default(T(m,q)),!q&&w!==void 0&&b.optional(w)}if(l||s){let j=s?.definitions?.update?.default,w=l?.nullable;l?.type!==void 0&&b.type(z(m,q)),j!==void 0&&b.default(T(m,q)),!q&&w!==void 0&&b.optional(w)}if(u){let j=u.definitions?.default,w=u?.nullable;j!==void 0&&b.default(null),!q&&w!==void 0&&b.required(w)}b.empty||i.push({check:$(x,h,a),query:b.build()})}return i},"prepareUpdate"),g.prepareRename=r((x,h,f)=>{let n=[];for(let t in f){let i=f[t],a=x.table(h).alter().existing().rename(t,i);n.push({check:$(x,h,t),query:a.build()})}return n},"prepareRename"),g.prepareDelete=r((x,h,f)=>{let n=x.table(h).alter().existing();for(let t in f)n.drop(t).existing();return{query:n.build()}},"prepareDelete")))(Q||={});0&&(module.exports={ColumnQuery,DatabaseQueries,IndexQueries,RelationQuery,TableQuery,getTableRepositoryChanges});
|
|
1
|
+
var U=Object.defineProperty;var ee=Object.getOwnPropertyDescriptor;var te=Object.getOwnPropertyNames;var ne=Object.prototype.hasOwnProperty;var r=(e,o)=>U(e,"name",{value:o,configurable:!0});var re=(e,o)=>{for(var d in o)U(e,d,{get:o[d],enumerable:!0})},oe=(e,o,d,y)=>{if(o&&typeof o=="object"||typeof o=="function")for(let g of te(o))!ne.call(e,g)&&g!==d&&U(e,g,{get:()=>o[g],enumerable:!(y=ee(o,g))||y.enumerable});return e};var ie=e=>oe(U({},"__esModule",{value:!0}),e);var le={};re(le,{ColumnQuery:()=>Q,DatabaseQueries:()=>F,IndexQueries:()=>W,RelationQuery:()=>Z,TableQuery:()=>H,getTableRepositoryChanges:()=>se});module.exports=ie(le);var R=require("@ez4/utils"),I=require("@ez4/pgclient/library"),E=require("@ez4/schema");var se=r((e,o)=>(0,R.deepCompareObject)(e,o,{onCompareName:r((d,y)=>{let g=new Set((0,R.toSnakeCase)(d).split("_")),x=new Set((0,R.toSnakeCase)(y).split("_"));for(let h of x)if(h.length>1&&g.has(h))return!0;return!1},"onCompareName"),onRename:r((d,y)=>!(0,R.isAnyObject)(d)||!(0,R.isAnyObject)(y)?!1:(0,I.isTableMetadata)(d)&&(0,I.isTableMetadata)(y)?ae(d.schema,y.schema):(0,I.isTableIndex)(d)&&(0,I.isTableIndex)(y)?ce(d,y):(0,E.isAnySchema)(d)&&(0,E.isAnySchema)(y)?me(d,y):!1,"onRename")}),"getTableRepositoryChanges"),ae=r((e,o)=>(0,R.deepEqual)(Object.keys(e.properties),Object.keys(o.properties)),"canRenameTable"),ce=r((e,o)=>e.type===o.type&&(0,R.deepEqual)(e.columns,o.columns),"canRenameIndex"),me=r((e,o)=>(0,R.deepEqual)(e,o,{depth:1,include:{type:!0,definitions:!0,nullable:!0,format:!0}}),"canRenameColumn");var V=require("@ez4/pgsql");var K=r((e,o)=>{let[d]=e.select().rawColumn(1).from("pg_database").where({datname:e.rawString(o)}).build();return d},"getCheckDatabaseQuery"),N=r((e,o)=>{let[d]=e.select().rawColumn(1).from("pg_constraint").where({conname:e.rawString(o)}).build();return d},"getCheckConstraintQuery"),$=r((e,o,d)=>{let[y]=e.select().rawColumn(1).where({NOT:{exists:e.select().from(e.rawValue("information_schema.columns")).rawColumn(1).where({column_name:e.rawString(d),table_name:e.rawString(o)})}}).build();return y},"getCheckColumnQuery");var F;(d=>(d.prepareCreate=r(y=>{let g=new V.SqlBuilder;return{check:K(g,y),query:`CREATE DATABASE "${y}"`}},"prepareCreate"),d.prepareDelete=r(y=>({query:`DROP DATABASE IF EXISTS "${y}" WITH (FORCE)`}),"prepareDelete")))(F||={});var G=require("@ez4/database");var S=require("@ez4/schema"),L=require("@ez4/utils");var A=r(e=>!!(e.nullable||e.optional),"isOptionalColumn"),T=r((e,o)=>{if((0,S.isScalarSchema)(e)||(0,S.isObjectSchema)(e)||(0,S.isArraySchema)(e)||(0,S.isTupleSchema)(e)){let{definitions:d}=e;switch(typeof d?.default){case"boolean":case"number":return`${d.default}`;case"string":return`'${d.default}'`;case"object":return`'${JSON.stringify(d.default)}'`}}if((0,S.isEnumSchema)(e)){let{definitions:d}=e;if(d?.default)return`'${d.default}'`}if((0,S.isStringSchema)(e)&&o)switch(e.format){case"date-time":case"date":case"time":return"now()";case"uuid":return"gen_random_uuid()"}if(A(e))return"null"},"getColumnDefault"),z=r((e,o)=>{switch(e.type){case S.SchemaType.Array:case S.SchemaType.Object:case S.SchemaType.Reference:case S.SchemaType.Union:case S.SchemaType.Tuple:return"jsonb";case S.SchemaType.Boolean:return"boolean";case S.SchemaType.Enum:return"text";case S.SchemaType.Number:return ue(e,o);case S.SchemaType.String:return pe(e)}},"getColumnType"),ue=r((e,o)=>e.format==="integer"?o?"bigserial":"bigint":"decimal","getColumNumberType"),pe=r(e=>{switch(e.format){case"uuid":case"time":case"date":return e.format;case"date-time":return"timestamptz";default:let o=e.definitions?.maxLength;return(0,L.isAnyNumber)(o)?`varchar(${o})`:"text"}},"getColumnTextType");var H;(y=>(y.prepareCreate=r((g,x,h,f)=>{let n=g.table(x).create().missing();for(let t in h.properties){let i=h.properties[t],c=f[t]?.type===G.Index.Primary,l=!A(i),s=z(i,c),u=T(i,c);n.column(t,s,l,u).missing()}return{query:n.build()}},"prepareCreate"),y.prepareRename=r((g,x,h)=>({query:g.table(x).rename(h).existing().build()}),"prepareRename"),y.prepareDelete=r((g,x)=>({query:g.table(x).drop().existing().cascade().build()}),"prepareDelete")))(H||={});var _=require("@ez4/schema"),C=require("@ez4/database");var J=require("@ez4/utils");var P=r((e,o)=>`${D(e,o)}_pk`,"getPrimaryKeyName"),k=r((e,o)=>`${D(e,o)}_uk`,"getUniqueKeyName"),O=r((e,o)=>`${D(e,o)}_sk`,"getSecondaryKeyName"),B=r((e,o)=>`${D(e,o)}_fk`,"getRelationName");var D=r((e,o)=>`${e}_${(0,J.toSnakeCase)(o.replaceAll(":","_"))}`,"getName");var W;(f=>{f.prepareCreate=r((n,t,i,a)=>{let c={constraints:[],validations:[],indexes:[]};for(let l in a){let{columns:s,type:u,name:m}=a[l];switch(u){default:throw new Error("Unsupported index type.");case C.Index.Primary:{let p=P(t,m);c.constraints.push({check:N(n,p),query:n.table(t).alter().existing().constraint(p).primary(s).build()});break}case C.Index.Unique:{let p=k(t,m),q=h(s,i);c.indexes.push({query:n.index(p).create(t,s).type(q).unique().concurrent().missing().build()}),c.validations.push({query:(0,f.getValidationQuery)(n,p),name:p});break}case C.Index.Secondary:{let p=O(t,m),q=h(s,i);c.indexes.push({query:n.index(p).create(t,s).type(q).concurrent().missing().build()}),c.validations.push({query:(0,f.getValidationQuery)(n,p),name:p});break}}}return c},"prepareCreate"),f.prepareUpdate=r((n,t,i,a,c,l)=>{let s={constraints:[],validations:[],indexes:[]};for(let u in l){let{update:m,create:p,remove:q}=l[u];if(q||m){let b=(0,f.prepareDelete)(n,t,{[u]:a[u]});s.constraints.push(...b.constraints),s.indexes.push(...b.indexes)}if(p||m){let b=(0,f.prepareCreate)(n,t,i,{[u]:c[u]});s.constraints.push(...b.constraints),s.indexes.push(...b.indexes)}}return s},"prepareUpdate"),f.prepareRenameTable=r((n,t,i,a)=>{let c={validations:[],constraints:[],indexes:[]};for(let l in a){let{type:s,name:u}=a[l];switch(s){default:throw new Error("Unsupported index type.");case C.Index.Primary:{let m=P(t,u),p=P(i,u);c.constraints.push({check:N(n,p),query:n.table(i).alter().existing().constraint(m).rename(p).build()});break}case C.Index.Unique:{let m=k(t,u),p=k(i,u);c.indexes.push({query:n.index(m).rename(p).existing().build()});break}case C.Index.Secondary:{let m=O(t,u),p=O(i,u);c.indexes.push({query:n.index(m).rename(p).existing().build()});break}}}return c},"prepareRenameTable"),f.prepareRenameColumns=r((n,t,i,a)=>{let c={validations:[],constraints:[],indexes:[]};for(let l in a){let s=a[l],{type:u}=i[s];switch(u){default:throw new Error("Unsupported index type.");case C.Index.Primary:{let m=P(t,l),p=P(t,s);c.constraints.push({check:N(n,p),query:n.table(t).alter().existing().constraint(m).rename(p).build()});break}case C.Index.Unique:{let m=k(t,l),p=k(t,s);c.indexes.push({query:n.index(m).rename(p).existing().build()});break}case C.Index.Secondary:{let m=O(t,l),p=O(t,s);c.indexes.push({query:n.index(m).rename(p).existing().build()});break}}}return c},"prepareRenameColumns"),f.prepareDelete=r((n,t,i)=>{let a={validations:[],constraints:[],indexes:[]};for(let c in i){let{type:l,name:s}=i[c];switch(l){default:throw new Error("Unsupported index type.");case C.Index.Primary:{let u=P(t,s),m=n.table(t).alter().existing().constraint(u).drop().existing();a.constraints.push({query:m.build()});break}case C.Index.Unique:{let u=k(t,s),m=n.index(u).drop().existing().concurrent();a.indexes.push({query:m.build()});break}case C.Index.Secondary:{let u=O(t,s),m=n.index(u).drop().existing().concurrent();a.indexes.push({query:m.build()});break}}}return a},"prepareDelete"),f.getValidationQuery=r((n,t)=>{let[i]=n.select().rawColumn(1).from("pg_index").where({indexrelid:n.rawValue(`${n.rawString(t).build()}::regclass`),indisvalid:n.rawValue("false"),indisready:n.rawValue("true")}).build();return i},"getValidationQuery");let h=r((n,t)=>{if(n.length===1){let[i]=n;switch(t.properties[i]?.type){case _.SchemaType.Object:case _.SchemaType.Union:case _.SchemaType.Array:case _.SchemaType.Tuple:return"GIN"}}return"BTREE"},"getIndexType")})(W||={});var X=require("@ez4/pgclient/utils"),Y=require("@ez4/schema"),v=require("@ez4/database");var Z;(f=>{f.prepareCreate=r((n,t,i,a)=>{let c=[];for(let l in a){let s=a[l];if(g(s))continue;let{[s.targetColumn]:u}=i.properties,m=B(t,l),p=!!(0,Y.isNullishSchema)(u);c.push({check:N(n,m),query:h(n,t,m,s,p).build()})}return c},"prepareCreate"),f.prepareUpdate=r((n,t,i,a)=>{let c=[];for(let l in i){let s=i[l];if(g(s))continue;let u=a[s.targetColumn]?.update,m=u?.optional??u?.nullable;if(m===void 0)continue;let p=B(t,l);c.push({query:x(n,t,p).build()},{query:h(n,t,p,s,m).build()})}return c},"prepareUpdate"),f.prepareRename=r((n,t,i,a)=>{let c=[];for(let l in a){let s=a[l];if(g(s))continue;let u=B(t,l),m=B(i,l),p=n.table(i).alter().existing().constraint(u).rename(m);c.push({check:N(n,m),query:p.build()})}return c},"prepareRename"),f.prepareDelete=r((n,t,i)=>{let a=[];for(let c in i){let l=i[c];if(g(l))continue;let s=B(t,c);a.push({query:x(n,t,s).build()})}return a},"prepareDelete");let g=r(n=>{let{sourceIndex:t,targetIndex:i}=n;return!t||t===v.Index.Secondary||i===v.Index.Primary},"isNotRealRelation"),x=r((n,t,i)=>n.table(t).alter().existing().constraint(i).drop().existing(),"getDeleteQuery"),h=r((n,t,i,a,c)=>{let{sourceTable:l,sourceColumn:s,targetColumn:u}=a,m=(0,X.getTableName)(l),p=n.table(t).alter().existing().constraint(i),q=p.foreign(u,m,[s]).validate(!1);return c?q.delete().null():q.delete().cascade(),q.update().cascade(),p},"getCreateQuery")})(Z||={});var M=require("@ez4/database");var Q;(g=>(g.prepareCreate=r((x,h,f,n)=>{let t=x.table(h).alter().existing();for(let i in n){let a=n[i],l=f[i]?.type===M.Index.Primary,s=!A(a),u=z(a,l),m=T(a,l);t.add(i,u,s,m).missing()}return{query:t.build()}},"prepareCreate"),g.prepareUpdate=r((x,h,f,n,t)=>{let i=[];for(let a in t){let{create:c,update:l,nested:s,remove:u}=t[a],m=f.properties[a],q=n[a]?.type===M.Index.Primary,b=x.table(h).alter().existing().column(a);if(c){let j=c.definitions?.default,w=c?.nullable;j!==void 0&&b.default(T(m,q)),!q&&w!==void 0&&b.optional(w)}if(l||s){let j=s?.definitions?.update?.default,w=l?.nullable;l?.type!==void 0&&b.type(z(m,q)),j!==void 0&&b.default(T(m,q)),!q&&w!==void 0&&b.optional(w)}if(u){let j=u.definitions?.default,w=u?.nullable;j!==void 0&&b.default(null),!q&&w!==void 0&&b.required(w)}b.empty||i.push({check:$(x,h,a),query:b.build()})}return i},"prepareUpdate"),g.prepareRename=r((x,h,f)=>{let n=[];for(let t in f){let i=f[t],a=x.table(h).alter().existing().rename(t,i);n.push({check:$(x,h,t),query:a.build()})}return n},"prepareRename"),g.prepareDelete=r((x,h,f)=>{let n=x.table(h).alter().existing();for(let t in f)n.drop(t).existing();return{query:n.build()}},"prepareDelete")))(Q||={});0&&(module.exports={ColumnQuery,DatabaseQueries,IndexQueries,RelationQuery,TableQuery,getTableRepositoryChanges});
|
|
2
2
|
//# sourceMappingURL=library.cjs.map
|
package/dist/library.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var L=Object.defineProperty;var r=(n,m)=>L(n,"name",{value:m,configurable:!0});import{deepEqual as
|
|
1
|
+
var L=Object.defineProperty;var r=(n,m)=>L(n,"name",{value:m,configurable:!0});import{deepEqual as _,deepCompareObject as G,isAnyObject as D,toSnakeCase as E}from"@ez4/utils";import{isTableMetadata as $,isTableIndex as v}from"@ez4/pgclient/library";import{isAnySchema as M}from"@ez4/schema";var qe=r((n,m)=>G(n,m,{onCompareName:r((d,y)=>{let h=new Set(E(d).split("_")),f=new Set(E(y).split("_"));for(let x of f)if(x.length>1&&h.has(x))return!0;return!1},"onCompareName"),onRename:r((d,y)=>!D(d)||!D(y)?!1:$(d)&&$(y)?H(d.schema,y.schema):v(d)&&v(y)?J(d,y):M(d)&&M(y)?W(d,y):!1,"onRename")}),"getTableRepositoryChanges"),H=r((n,m)=>_(Object.keys(n.properties),Object.keys(m.properties)),"canRenameTable"),J=r((n,m)=>n.type===m.type&&_(n.columns,m.columns),"canRenameIndex"),W=r((n,m)=>_(n,m,{depth:1,include:{type:!0,definitions:!0,nullable:!0,format:!0}}),"canRenameColumn");import{SqlBuilder as X}from"@ez4/pgsql";var K=r((n,m)=>{let[d]=n.select().rawColumn(1).from("pg_database").where({datname:n.rawString(m)}).build();return d},"getCheckDatabaseQuery"),w=r((n,m)=>{let[d]=n.select().rawColumn(1).from("pg_constraint").where({conname:n.rawString(m)}).build();return d},"getCheckConstraintQuery"),U=r((n,m,d)=>{let[y]=n.select().rawColumn(1).where({NOT:{exists:n.select().from(n.rawValue("information_schema.columns")).rawColumn(1).where({column_name:n.rawString(d),table_name:n.rawString(m)})}}).build();return y},"getCheckColumnQuery");var Y;(d=>(d.prepareCreate=r(y=>{let h=new X;return{check:K(h,y),query:`CREATE DATABASE "${y}"`}},"prepareCreate"),d.prepareDelete=r(y=>({query:`DROP DATABASE IF EXISTS "${y}" WITH (FORCE)`}),"prepareDelete")))(Y||={});import{Index as ae}from"@ez4/database";import{isArraySchema as Z,isEnumSchema as Q,isObjectSchema as ee,isScalarSchema as te,isStringSchema as ne,isTupleSchema as re,SchemaType as C}from"@ez4/schema";import{isAnyNumber as oe}from"@ez4/utils";var B=r(n=>!!(n.nullable||n.optional),"isOptionalColumn"),O=r((n,m)=>{if(te(n)||ee(n)||Z(n)||re(n)){let{definitions:d}=n;switch(typeof d?.default){case"boolean":case"number":return`${d.default}`;case"string":return`'${d.default}'`;case"object":return`'${JSON.stringify(d.default)}'`}}if(Q(n)){let{definitions:d}=n;if(d?.default)return`'${d.default}'`}if(ne(n)&&m)switch(n.format){case"date-time":case"date":case"time":return"now()";case"uuid":return"gen_random_uuid()"}if(B(n))return"null"},"getColumnDefault"),j=r((n,m)=>{switch(n.type){case C.Array:case C.Object:case C.Reference:case C.Union:case C.Tuple:return"jsonb";case C.Boolean:return"boolean";case C.Enum:return"text";case C.Number:return ie(n,m);case C.String:return se(n)}},"getColumnType"),ie=r((n,m)=>n.format==="integer"?m?"bigserial":"bigint":"decimal","getColumNumberType"),se=r(n=>{switch(n.format){case"uuid":case"time":case"date":return n.format;case"date-time":return"timestamptz";default:let m=n.definitions?.maxLength;return oe(m)?`varchar(${m})`:"text"}},"getColumnTextType");var ce;(y=>(y.prepareCreate=r((h,f,x,g)=>{let t=h.table(f).create().missing();for(let e in x.properties){let o=x.properties[e],a=g[e]?.type===ae.Primary,l=!B(o),i=j(o,a),u=O(o,a);t.column(e,i,l,u).missing()}return{query:t.build()}},"prepareCreate"),y.prepareRename=r((h,f,x)=>({query:h.table(f).rename(x).existing().build()}),"prepareRename"),y.prepareDelete=r((h,f)=>({query:h.table(f).drop().existing().cascade().build()}),"prepareDelete")))(ce||={});import{SchemaType as z}from"@ez4/schema";import{Index as b}from"@ez4/database";import{toSnakeCase as me}from"@ez4/utils";var N=r((n,m)=>`${A(n,m)}_pk`,"getPrimaryKeyName"),P=r((n,m)=>`${A(n,m)}_uk`,"getUniqueKeyName"),k=r((n,m)=>`${A(n,m)}_sk`,"getSecondaryKeyName"),I=r((n,m)=>`${A(n,m)}_fk`,"getRelationName");var A=r((n,m)=>`${n}_${me(m.replaceAll(":","_"))}`,"getName");var ue;(g=>{g.prepareCreate=r((t,e,o,s)=>{let a={constraints:[],validations:[],indexes:[]};for(let l in s){let{columns:i,type:u,name:c}=s[l];switch(u){default:throw new Error("Unsupported index type.");case b.Primary:{let p=N(e,c);a.constraints.push({check:w(t,p),query:t.table(e).alter().existing().constraint(p).primary(i).build()});break}case b.Unique:{let p=P(e,c),S=x(i,o);a.indexes.push({query:t.index(p).create(e,i).type(S).unique().concurrent().missing().build()}),a.validations.push({query:(0,g.getValidationQuery)(t,p),name:p});break}case b.Secondary:{let p=k(e,c),S=x(i,o);a.indexes.push({query:t.index(p).create(e,i).type(S).concurrent().missing().build()}),a.validations.push({query:(0,g.getValidationQuery)(t,p),name:p});break}}}return a},"prepareCreate"),g.prepareUpdate=r((t,e,o,s,a,l)=>{let i={constraints:[],validations:[],indexes:[]};for(let u in l){let{update:c,create:p,remove:S}=l[u];if(S||c){let q=(0,g.prepareDelete)(t,e,{[u]:s[u]});i.constraints.push(...q.constraints),i.indexes.push(...q.indexes)}if(p||c){let q=(0,g.prepareCreate)(t,e,o,{[u]:a[u]});i.constraints.push(...q.constraints),i.indexes.push(...q.indexes)}}return i},"prepareUpdate"),g.prepareRenameTable=r((t,e,o,s)=>{let a={validations:[],constraints:[],indexes:[]};for(let l in s){let{type:i,name:u}=s[l];switch(i){default:throw new Error("Unsupported index type.");case b.Primary:{let c=N(e,u),p=N(o,u);a.constraints.push({check:w(t,p),query:t.table(o).alter().existing().constraint(c).rename(p).build()});break}case b.Unique:{let c=P(e,u),p=P(o,u);a.indexes.push({query:t.index(c).rename(p).existing().build()});break}case b.Secondary:{let c=k(e,u),p=k(o,u);a.indexes.push({query:t.index(c).rename(p).existing().build()});break}}}return a},"prepareRenameTable"),g.prepareRenameColumns=r((t,e,o,s)=>{let a={validations:[],constraints:[],indexes:[]};for(let l in s){let i=s[l],{type:u}=o[i];switch(u){default:throw new Error("Unsupported index type.");case b.Primary:{let c=N(e,l),p=N(e,i);a.constraints.push({check:w(t,p),query:t.table(e).alter().existing().constraint(c).rename(p).build()});break}case b.Unique:{let c=P(e,l),p=P(e,i);a.indexes.push({query:t.index(c).rename(p).existing().build()});break}case b.Secondary:{let c=k(e,l),p=k(e,i);a.indexes.push({query:t.index(c).rename(p).existing().build()});break}}}return a},"prepareRenameColumns"),g.prepareDelete=r((t,e,o)=>{let s={validations:[],constraints:[],indexes:[]};for(let a in o){let{type:l,name:i}=o[a];switch(l){default:throw new Error("Unsupported index type.");case b.Primary:{let u=N(e,i),c=t.table(e).alter().existing().constraint(u).drop().existing();s.constraints.push({query:c.build()});break}case b.Unique:{let u=P(e,i),c=t.index(u).drop().existing().concurrent();s.indexes.push({query:c.build()});break}case b.Secondary:{let u=k(e,i),c=t.index(u).drop().existing().concurrent();s.indexes.push({query:c.build()});break}}}return s},"prepareDelete"),g.getValidationQuery=r((t,e)=>{let[o]=t.select().rawColumn(1).from("pg_index").where({indexrelid:t.rawValue(`${t.rawString(e).build()}::regclass`),indisvalid:t.rawValue("false"),indisready:t.rawValue("true")}).build();return o},"getValidationQuery");let x=r((t,e)=>{if(t.length===1){let[o]=t;switch(e.properties[o]?.type){case z.Object:case z.Union:case z.Array:case z.Tuple:return"GIN"}}return"BTREE"},"getIndexType")})(ue||={});import{getTableName as pe}from"@ez4/pgclient/utils";import{isNullishSchema as le}from"@ez4/schema";import{Index as V}from"@ez4/database";var de;(g=>{g.prepareCreate=r((t,e,o,s)=>{let a=[];for(let l in s){let i=s[l];if(h(i))continue;let{[i.targetColumn]:u}=o.properties,c=I(e,l),p=!!le(u);a.push({check:w(t,c),query:x(t,e,c,i,p).build()})}return a},"prepareCreate"),g.prepareUpdate=r((t,e,o,s)=>{let a=[];for(let l in o){let i=o[l];if(h(i))continue;let u=s[i.targetColumn]?.update,c=u?.optional??u?.nullable;if(c===void 0)continue;let p=I(e,l);a.push({query:f(t,e,p).build()},{query:x(t,e,p,i,c).build()})}return a},"prepareUpdate"),g.prepareRename=r((t,e,o,s)=>{let a=[];for(let l in s){let i=s[l];if(h(i))continue;let u=I(e,l),c=I(o,l),p=t.table(o).alter().existing().constraint(u).rename(c);a.push({check:w(t,c),query:p.build()})}return a},"prepareRename"),g.prepareDelete=r((t,e,o)=>{let s=[];for(let a in o){let l=o[a];if(h(l))continue;let i=I(e,a);s.push({query:f(t,e,i).build()})}return s},"prepareDelete");let h=r(t=>{let{sourceIndex:e,targetIndex:o}=t;return!e||e===V.Secondary||o===V.Primary},"isNotRealRelation"),f=r((t,e,o)=>t.table(e).alter().existing().constraint(o).drop().existing(),"getDeleteQuery"),x=r((t,e,o,s,a)=>{let{sourceTable:l,sourceColumn:i,targetColumn:u}=s,c=pe(l),p=t.table(e).alter().existing().constraint(o),S=p.foreign(u,c,[i]).validate(!1);return a?S.delete().null():S.delete().cascade(),S.update().cascade(),p},"getCreateQuery")})(de||={});import{Index as F}from"@ez4/database";var ge;(h=>(h.prepareCreate=r((f,x,g,t)=>{let e=f.table(x).alter().existing();for(let o in t){let s=t[o],l=g[o]?.type===F.Primary,i=!B(s),u=j(s,l),c=O(s,l);e.add(o,u,i,c).missing()}return{query:e.build()}},"prepareCreate"),h.prepareUpdate=r((f,x,g,t,e)=>{let o=[];for(let s in e){let{create:a,update:l,nested:i,remove:u}=e[s],c=g.properties[s],S=t[s]?.type===F.Primary,q=f.table(x).alter().existing().column(s);if(a){let T=a.definitions?.default,R=a?.nullable;T!==void 0&&q.default(O(c,S)),!S&&R!==void 0&&q.optional(R)}if(l||i){let T=i?.definitions?.update?.default,R=l?.nullable;l?.type!==void 0&&q.type(j(c,S)),T!==void 0&&q.default(O(c,S)),!S&&R!==void 0&&q.optional(R)}if(u){let T=u.definitions?.default,R=u?.nullable;T!==void 0&&q.default(null),!S&&R!==void 0&&q.required(R)}q.empty||o.push({check:U(f,x,s),query:q.build()})}return o},"prepareUpdate"),h.prepareRename=r((f,x,g)=>{let t=[];for(let e in g){let o=g[e],s=f.table(x).alter().existing().rename(e,o);t.push({check:U(f,x,e),query:s.build()})}return t},"prepareRename"),h.prepareDelete=r((f,x,g)=>{let t=f.table(x).alter().existing();for(let e in g)t.drop(e).existing();return{query:t.build()}},"prepareDelete")))(ge||={});export{ge as ColumnQuery,Y as DatabaseQueries,ue as IndexQueries,de as RelationQuery,ce as TableQuery,qe as getTableRepositoryChanges};
|
|
2
2
|
//# sourceMappingURL=library.mjs.map
|
package/dist/main.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var H=Object.defineProperty;var de=Object.getOwnPropertyDescriptor;var ge=Object.getOwnPropertyNames;var ye=Object.prototype.hasOwnProperty;var c=(e,o)=>H(e,"name",{value:o,configurable:!0});var fe=(e,o)=>{for(var y in o)H(e,y,{get:o[y],enumerable:!0})},he=(e,o,y,f)=>{if(o&&typeof o=="object"||typeof o=="function")for(let g of ge(o))!ye.call(e,g)&&g!==y&&H(e,g,{get:()=>o[g],enumerable:!(f=de(o,g))||f.enumerable});return e};var xe=e=>he(H({},"__esModule",{value:!0}),e);var Ne={};fe(Ne,{getCreateQueries:()=>me,getDeleteQueries:()=>ue,getUpdateStepQueries:()=>Pe});module.exports=xe(Ne);var W=require("@ez4/pgsql");var k=require("@ez4/utils"),U=require("@ez4/pgclient/library"),Y=require("@ez4/schema");var oe=c((e,o)=>(0,k.deepCompareObject)(e,o,{onCompareName:c((y,f)=>{let g=new Set((0,k.toSnakeCase)(y).split("_")),d=new Set((0,k.toSnakeCase)(f).split("_"));for(let h of d)if(h.length>1&&g.has(h))return!0;return!1},"onCompareName"),onRename:c((y,f)=>!(0,k.isAnyObject)(y)||!(0,k.isAnyObject)(f)?!1:(0,U.isTableMetadata)(y)&&(0,U.isTableMetadata)(f)?Se(y.schema,f.schema):(0,U.isTableIndex)(y)&&(0,U.isTableIndex)(f)?qe(y,f):(0,Y.isAnySchema)(y)&&(0,Y.isAnySchema)(f)?be(y,f):!1,"onRename")}),"getTableRepositoryChanges"),Se=c((e,o)=>(0,k.deepEqual)(Object.keys(e.properties),Object.keys(o.properties)),"canRenameTable"),qe=c((e,o)=>e.type===o.type,"canRenameIndex"),be=c((e,o)=>(0,k.deepEqual)(e,o,{depth:1,include:{type:!0,definitions:!0,nullable:!0,format:!0}}),"canRenameColumn");var R=require("@ez4/schema"),Q=require("@ez4/utils");var w=c((e,o)=>{let[y]=e.select().rawColumn(1).from("pg_constraint").where({conname:e.rawString(o)}).build();return y},"getCheckConstraintQuery"),Z=c((e,o,y)=>{let[f]=e.select().rawColumn(1).where({NOT:{exists:e.select().from(e.rawValue("information_schema.columns")).rawColumn(1).where({column_name:e.rawString(y),table_name:e.rawString(o)})}}).build();return f},"getCheckColumnQuery"),ee=c((e,o)=>{let[y]=e.select().rawColumn(1).from("pg_constraint").where({convalidated:e.rawValue("true"),conname:e.rawString(o)}).build();return y},"getCheckConstraintValidatedQuery");var se=require("@ez4/utils");var I=c((e,o)=>`${V(e,o)}_pk`,"getPrimaryKeyName"),A=c((e,o)=>`${V(e,o)}_uk`,"getUniqueKeyName"),z=c((e,o)=>`${V(e,o)}_sk`,"getSecondaryKeyName"),D=c((e,o)=>`${V(e,o)}_fk`,"getRelationName"),O=c((e,o)=>`${V(e,o)}_ck`,"getConstraintName"),V=c((e,o)=>`${e}_${(0,se.toSnakeCase)(o.replaceAll(":","_"))}`,"getName");var B;(i=>{i.prepareCreate=c((n,s,u)=>{let p={constraints:[],validations:[]};for(let a in u){let m=u[a];if((0,R.isEnumSchema)(m)||(0,R.isScalarSchema)(m)&&(0,Q.isNotNullish)(m.definitions?.value)){let l=O(s,a);p.constraints.push({check:w(n,l),query:x(n,s,l,a,m).build()}),p.validations.push({check:ee(n,l),query:h(n,s,l).build(),name:l})}}return p},"prepareCreate"),i.prepareUpdate=c((n,s,u,p,a)=>{let m={constraints:[],validations:[]};for(let l in a){let{update:S,create:q,remove:P,nested:C}=a[l],$=[];if(P||S||C){let F=p.properties[l],X={...P,...S,...C};if(t(F,X)){let j=O(s,l);$.push({query:d(n,s,j).build()})}}if(q||S||C){let F=u.properties[l],X={...q,...S,...C};if(t(F,X)){let j=O(s,l),le=$.length;$.push({...!le&&{check:w(n,j)},query:x(n,s,j,l,F).build()}),m.validations.push({check:ee(n,j),query:h(n,s,j).build(),name:j})}}m.constraints.push(...$)}return m},"prepareUpdate"),i.prepareRenameTable=c((n,s,u,p)=>{let a=[];for(let m in p){let l=p[m];if(r(l)){let S=O(s,m),q=O(u,m),P=n.table(u).alter().existing().constraint(S).rename(q);a.push({check:w(n,q),query:P.build()})}}return a},"prepareRenameTable"),i.prepareRenameColumns=c((n,s,u,p)=>{let a=[];for(let m in p){let l=p[m],S=u[l];if(r(S)){let q=O(s,m),P=O(s,l),C=n.table(s).alter().existing().constraint(q).rename(P);a.push({check:w(n,P),query:C.build()})}}return a},"prepareRenameColumns"),i.prepareDelete=c((n,s,u)=>{let p=[];for(let a in u){let m=u[a];if(r(m)){let l=O(s,a);p.push({query:d(n,s,l).build()})}}return p},"prepareDelete");let d=c((n,s,u)=>n.table(s).alter().existing().constraint(u).drop().existing(),"getDeleteQuery"),h=c((n,s,u)=>n.table(s).alter().existing().constraint(u).validate(),"getValidationQuery"),x=c((n,s,u,p,a)=>{let m=n.table(s).alter().existing().constraint(u);switch(a.type){case R.SchemaType.Enum:{let l=a.options.map(({value:q})=>`${q}`);m.check({[p]:{isIn:l}}).validate(!1);break}case R.SchemaType.Boolean:case R.SchemaType.Number:case R.SchemaType.String:{m.check({[p]:{equal:a.definitions?.value}}).validate(!1);break}}return m},"getCreateQuery"),r=c(n=>(0,R.isEnumSchema)(n)||(0,R.isScalarSchema)(n)&&(0,Q.isNotNullish)(n.definitions?.value),"isConstrainedSchema"),t=c((n,s)=>{switch(n.type){case R.SchemaType.Boolean:case R.SchemaType.Number:case R.SchemaType.String:return(0,Q.isNotNullish)(s.definitions?.value)||(0,Q.isNotNullish)(s.definitions?.update?.value);case R.SchemaType.Enum:return(0,Q.isNotNullish)(s.options)}return!1},"isConstrainedChange")})(B||={});var ie=require("@ez4/pgclient/utils"),ae=require("@ez4/schema"),te=require("@ez4/database");var M;(x=>{x.prepareCreate=c((r,t,i,n)=>{let s=[];for(let u in n){let p=n[u];if(g(p))continue;let{[p.targetColumn]:a}=i.properties,m=D(t,u),l=!!(0,ae.isNullishSchema)(a);s.push({check:w(r,m),query:h(r,t,m,p,l).build()})}return s},"prepareCreate"),x.prepareUpdate=c((r,t,i,n)=>{let s=[];for(let u in i){let p=i[u];if(g(p))continue;let a=n[p.targetColumn]?.update,m=a?.optional??a?.nullable;if(m===void 0)continue;let l=D(t,u);s.push({query:d(r,t,l).build()},{query:h(r,t,l,p,m).build()})}return s},"prepareUpdate"),x.prepareRename=c((r,t,i,n)=>{let s=[];for(let u in n){let p=n[u];if(g(p))continue;let a=D(t,u),m=D(i,u),l=r.table(i).alter().existing().constraint(a).rename(m);s.push({check:w(r,m),query:l.build()})}return s},"prepareRename"),x.prepareDelete=c((r,t,i)=>{let n=[];for(let s in i){let u=i[s];if(g(u))continue;let p=D(t,s);n.push({query:d(r,t,p).build()})}return n},"prepareDelete");let g=c(r=>{let{sourceIndex:t,targetIndex:i}=r;return!t||t===te.Index.Secondary||i===te.Index.Primary},"isNotRealRelation"),d=c((r,t,i)=>r.table(t).alter().existing().constraint(i).drop().existing(),"getDeleteQuery"),h=c((r,t,i,n,s)=>{let{sourceTable:u,sourceColumn:p,targetColumn:a}=n,m=(0,ie.getTableName)(u),l=r.table(t).alter().existing().constraint(i),S=l.foreign(a,m,[p]).validate(!1);return s?S.delete().null():S.delete().cascade(),S.update().cascade(),l},"getCreateQuery")})(M||={});var K=require("@ez4/schema"),N=require("@ez4/database");var T;(x=>{x.prepareCreate=c((r,t,i,n)=>{let s={constraints:[],validations:[],indexes:[]};for(let u in n){let{columns:p,type:a,name:m}=n[u];switch(a){default:throw new Error("Unsupported index type.");case N.Index.Primary:{let l=I(t,m);s.constraints.push({check:w(r,l),query:r.table(t).alter().existing().constraint(l).primary(p).build()});break}case N.Index.Unique:{let l=A(t,m),S=h(p,i);s.indexes.push({query:r.index(l).create(t,p).type(S).unique().concurrent().missing().build()}),s.validations.push({query:(0,x.getValidationQuery)(r,l),name:l});break}case N.Index.Secondary:{let l=z(t,m),S=h(p,i);s.indexes.push({query:r.index(l).create(t,p).type(S).concurrent().missing().build()}),s.validations.push({query:(0,x.getValidationQuery)(r,l),name:l});break}}}return s},"prepareCreate"),x.prepareUpdate=c((r,t,i,n,s,u)=>{let p={constraints:[],validations:[],indexes:[]};for(let a in u){let{update:m,create:l,remove:S}=u[a];if(S||m){let q=(0,x.prepareDelete)(r,t,{[a]:n[a]});p.constraints.push(...q.constraints),p.indexes.push(...q.indexes)}if(l||m){let q=(0,x.prepareCreate)(r,t,i,{[a]:s[a]});p.constraints.push(...q.constraints),p.indexes.push(...q.indexes)}}return p},"prepareUpdate"),x.prepareRenameTable=c((r,t,i,n)=>{let s={validations:[],constraints:[],indexes:[]};for(let u in n){let{type:p,name:a}=n[u];switch(p){default:throw new Error("Unsupported index type.");case N.Index.Primary:{let m=I(t,a),l=I(i,a);s.constraints.push({check:w(r,l),query:r.table(i).alter().existing().constraint(m).rename(l).build()});break}case N.Index.Unique:{let m=A(t,a),l=A(i,a);s.indexes.push({query:r.index(m).rename(l).existing().build()});break}case N.Index.Secondary:{let m=z(t,a),l=z(i,a);s.indexes.push({query:r.index(m).rename(l).existing().build()});break}}}return s},"prepareRenameTable"),x.prepareRenameColumns=c((r,t,i,n)=>{let s={validations:[],constraints:[],indexes:[]};for(let u in n){let p=n[u],{type:a}=i[p];switch(a){default:throw new Error("Unsupported index type.");case N.Index.Primary:{let m=I(t,u),l=I(t,p);s.constraints.push({check:w(r,l),query:r.table(t).alter().existing().constraint(m).rename(l).build()});break}case N.Index.Unique:{let m=A(t,u),l=A(t,p);s.indexes.push({query:r.index(l).rename(m).existing().build()});break}case N.Index.Secondary:{let m=z(t,u),l=z(t,p);s.indexes.push({query:r.index(m).rename(l).existing().build()});break}}}return s},"prepareRenameColumns"),x.prepareDelete=c((r,t,i)=>{let n={validations:[],constraints:[],indexes:[]};for(let s in i){let{type:u,name:p}=i[s];switch(u){default:throw new Error("Unsupported index type.");case N.Index.Primary:{let a=I(t,p),m=r.table(t).alter().existing().constraint(a).drop().existing();n.constraints.push({query:m.build()});break}case N.Index.Unique:{let a=A(t,p),m=r.index(a).drop().existing().concurrent();n.indexes.push({query:m.build()});break}case N.Index.Secondary:{let a=z(t,p),m=r.index(a).drop().existing().concurrent();n.indexes.push({query:m.build()});break}}}return n},"prepareDelete"),x.getValidationQuery=c((r,t)=>{let[i]=r.select().rawColumn(1).from("pg_index").where({indexrelid:r.rawValue(`${r.rawString(t).build()}::regclass`),indisvalid:r.rawValue("false"),indisready:r.rawValue("true")}).build();return i},"getValidationQuery");let h=c((r,t)=>{if(r.length===1){let[i]=r;switch(t.properties[i]?.type){case K.SchemaType.Object:case K.SchemaType.Union:case K.SchemaType.Array:case K.SchemaType.Tuple:return"GIN"}}return"BTREE"},"getIndexType")})(T||={});var ne=require("@ez4/database");var b=require("@ez4/schema"),ce=require("@ez4/utils");var L=c(e=>!!(e.nullable||e.optional),"isOptionalColumn"),_=c((e,o)=>{if((0,b.isScalarSchema)(e)||(0,b.isObjectSchema)(e)||(0,b.isArraySchema)(e)||(0,b.isTupleSchema)(e)){let{definitions:y}=e;switch(typeof y?.default){case"boolean":case"number":return`${y.default}`;case"string":return`'${y.default}'`;case"object":return`'${JSON.stringify(y.default)}'`}}if((0,b.isEnumSchema)(e)){let{definitions:y}=e;if(y?.default)return`'${y.default}'`}if((0,b.isStringSchema)(e)&&o)switch(e.format){case"date-time":case"date":case"time":return"now()";case"uuid":return"gen_random_uuid()"}if(L(e))return"null"},"getColumnDefault"),G=c((e,o)=>{switch(e.type){case b.SchemaType.Array:case b.SchemaType.Object:case b.SchemaType.Reference:case b.SchemaType.Union:case b.SchemaType.Tuple:return"jsonb";case b.SchemaType.Boolean:return"boolean";case b.SchemaType.Enum:return"text";case b.SchemaType.Number:return Ce(e,o);case b.SchemaType.String:return Re(e)}},"getColumnType"),Ce=c((e,o)=>e.format==="integer"?o?"bigserial":"bigint":"decimal","getColumNumberType"),Re=c(e=>{switch(e.format){case"uuid":case"time":case"date":return e.format;case"date-time":return"timestamptz";default:let o=e.definitions?.maxLength;return(0,ce.isAnyNumber)(o)?`varchar(${o})`:"text"}},"getColumnTextType");var E;(g=>(g.prepareCreate=c((d,h,x,r)=>{let t=d.table(h).alter().existing();for(let i in r){let n=r[i],u=x[i]?.type===ne.Index.Primary,p=!L(n),a=G(n,u),m=_(n,u);t.add(i,a,p,m).missing()}return{query:t.build()}},"prepareCreate"),g.prepareUpdate=c((d,h,x,r,t)=>{let i=[];for(let n in t){let{create:s,update:u,nested:p,remove:a}=t[n],m=x.properties[n],S=r[n]?.type===ne.Index.Primary,q=d.table(h).alter().existing().column(n);if(s){let P=s.definitions?.default,C=s?.nullable;P!==void 0&&q.default(_(m,S)),!S&&C!==void 0&&q.optional(C)}if(u||p){let P=p?.definitions?.update?.default,C=u?.nullable;u?.type!==void 0&&q.type(G(m,S)),P!==void 0&&q.default(_(m,S)),!S&&C!==void 0&&q.optional(C)}if(a){let P=a.definitions?.default,C=a?.nullable;P!==void 0&&q.default(null),!S&&C!==void 0&&q.required(C)}q.empty||i.push({check:Z(d,h,n),query:q.build()})}return i},"prepareUpdate"),g.prepareRename=c((d,h,x)=>{let r=[];for(let t in x){let i=x[t],n=d.table(h).alter().existing().rename(t,i);r.push({check:Z(d,h,t),query:n.build()})}return r},"prepareRename"),g.prepareDelete=c((d,h,x)=>{let r=d.table(h).alter().existing();for(let t in x)r.drop(t).existing();return{query:r.build()}},"prepareDelete")))(E||={});var pe=require("@ez4/database");var J;(f=>(f.prepareCreate=c((g,d,h,x)=>{let r=g.table(d).create().missing();for(let t in h.properties){let i=h.properties[t],s=x[t]?.type===pe.Index.Primary,u=!L(i),p=G(i,s),a=_(i,s);r.column(t,p,u,a).missing()}return{query:r.build()}},"prepareCreate"),f.prepareRename=c((g,d,h)=>({query:g.table(d).rename(h).existing().build()}),"prepareRename"),f.prepareDelete=c((g,d)=>({query:g.table(d).drop().existing().cascade().build()}),"prepareDelete")))(J||={});var me=c(e=>{let o=new W.SqlBuilder,y={tables:[],constraints:[],validations:[],relations:[],indexes:[]};for(let f in e){let{name:g,schema:d,indexes:h,relations:x}=e[f];y.tables.push(J.prepareCreate(o,g,d,h)),y.relations.push(...M.prepareCreate(o,g,d,x)),v(y,B.prepareCreate(o,g,d.properties)),v(y,T.prepareCreate(o,g,d,h))}return y},"getCreateQueries"),Pe=c((e,o)=>{let y=oe(e,o),f=new W.SqlBuilder,g={create:re(),update:re(),delete:re()};if(y.create&&v(g.create,me(y.create)),y.rename)for(let d in y.rename){let h=y.rename[d],x=e[h].indexes,r=e[h].relations,t=e[h].schema;g.update.tables.push(J.prepareRename(f,d,h)),g.update.constraints.push(...B.prepareRenameTable(f,d,h,t.properties)),g.update.relations.push(...M.prepareRename(f,d,h,r)),v(g.update,T.prepareRenameTable(f,d,h,x))}if(y.nested)for(let d in y.nested){let{nested:h}=y.nested[d];if(!h)continue;let{schema:x,relations:r,indexes:t}=h,i=x?.nested?.properties,n=e[d].relations,s=o[d].indexes,u=e[d].indexes,p=o[d].schema,a=e[d].schema;i?.create&&(g.create.tables.push(E.prepareCreate(f,d,u,i.create)),v(g.create,B.prepareCreate(f,d,i.create))),i?.nested&&(g.update.tables.push(...E.prepareUpdate(f,d,a,u,i.nested)),v(g.update,B.prepareUpdate(f,d,a,p,i.nested)),g.update.relations.push(...M.prepareUpdate(f,d,n,i.nested))),i?.rename&&(g.update.tables.push(...E.prepareRename(f,d,i.rename)),g.update.constraints.push(...B.prepareRenameColumns(f,d,a.properties,i.rename))),i?.remove&&(g.delete.tables.push(E.prepareDelete(f,d,i.remove)),g.delete.constraints.push(...B.prepareDelete(f,d,i.remove))),t?.create&&v(g.create,T.prepareCreate(f,d,a,t.create)),t?.nested&&v(g.update,T.prepareUpdate(f,d,a,s,u,t.nested)),t?.rename&&v(g.update,T.prepareRenameColumns(f,d,u,t.rename)),t?.remove&&v(g.delete,T.prepareDelete(f,d,t.remove)),r?.create&&g.create.relations.push(...M.prepareCreate(f,d,a,r.create)),r?.remove&&g.delete.relations.push(...M.prepareDelete(f,d,r.remove))}return y.remove&&v(g.delete,ue(y.remove)),g},"getUpdateStepQueries"),ue=c(e=>{let o=new W.SqlBuilder,y={tables:[],constraints:[],validations:[],relations:[],indexes:[]};for(let f in e){let{name:g}=e[f];y.tables.push(J.prepareDelete(o,g))}return y},"getDeleteQueries"),v=c((e,o)=>{o.tables&&e.tables.push(...o.tables),o.constraints&&e.constraints.push(...o.constraints),o.validations&&e.validations.push(...o.validations),o.relations&&e.relations.push(...o.relations),o.indexes&&e.indexes.push(...o.indexes)},"combineQueries"),re=c(()=>({tables:[],constraints:[],validations:[],relations:[],indexes:[]}),"getStepQueries");0&&(module.exports={getCreateQueries,getDeleteQueries,getUpdateStepQueries});
|
|
1
|
+
var H=Object.defineProperty;var de=Object.getOwnPropertyDescriptor;var ge=Object.getOwnPropertyNames;var ye=Object.prototype.hasOwnProperty;var c=(e,r)=>H(e,"name",{value:r,configurable:!0});var fe=(e,r)=>{for(var y in r)H(e,y,{get:r[y],enumerable:!0})},he=(e,r,y,f)=>{if(r&&typeof r=="object"||typeof r=="function")for(let g of ge(r))!ye.call(e,g)&&g!==y&&H(e,g,{get:()=>r[g],enumerable:!(f=de(r,g))||f.enumerable});return e};var xe=e=>he(H({},"__esModule",{value:!0}),e);var Ne={};fe(Ne,{getCreateQueries:()=>me,getDeleteQueries:()=>ue,getUpdateStepQueries:()=>Pe});module.exports=xe(Ne);var W=require("@ez4/pgsql");var w=require("@ez4/utils"),U=require("@ez4/pgclient/library"),Y=require("@ez4/schema");var oe=c((e,r)=>(0,w.deepCompareObject)(e,r,{onCompareName:c((y,f)=>{let g=new Set((0,w.toSnakeCase)(y).split("_")),d=new Set((0,w.toSnakeCase)(f).split("_"));for(let h of d)if(h.length>1&&g.has(h))return!0;return!1},"onCompareName"),onRename:c((y,f)=>!(0,w.isAnyObject)(y)||!(0,w.isAnyObject)(f)?!1:(0,U.isTableMetadata)(y)&&(0,U.isTableMetadata)(f)?Se(y.schema,f.schema):(0,U.isTableIndex)(y)&&(0,U.isTableIndex)(f)?qe(y,f):(0,Y.isAnySchema)(y)&&(0,Y.isAnySchema)(f)?be(y,f):!1,"onRename")}),"getTableRepositoryChanges"),Se=c((e,r)=>(0,w.deepEqual)(Object.keys(e.properties),Object.keys(r.properties)),"canRenameTable"),qe=c((e,r)=>e.type===r.type&&(0,w.deepEqual)(e.columns,r.columns),"canRenameIndex"),be=c((e,r)=>(0,w.deepEqual)(e,r,{depth:1,include:{type:!0,definitions:!0,nullable:!0,format:!0}}),"canRenameColumn");var R=require("@ez4/schema"),Q=require("@ez4/utils");var k=c((e,r)=>{let[y]=e.select().rawColumn(1).from("pg_constraint").where({conname:e.rawString(r)}).build();return y},"getCheckConstraintQuery"),Z=c((e,r,y)=>{let[f]=e.select().rawColumn(1).where({NOT:{exists:e.select().from(e.rawValue("information_schema.columns")).rawColumn(1).where({column_name:e.rawString(y),table_name:e.rawString(r)})}}).build();return f},"getCheckColumnQuery"),ee=c((e,r)=>{let[y]=e.select().rawColumn(1).from("pg_constraint").where({convalidated:e.rawValue("true"),conname:e.rawString(r)}).build();return y},"getCheckConstraintValidatedQuery");var se=require("@ez4/utils");var I=c((e,r)=>`${V(e,r)}_pk`,"getPrimaryKeyName"),A=c((e,r)=>`${V(e,r)}_uk`,"getUniqueKeyName"),z=c((e,r)=>`${V(e,r)}_sk`,"getSecondaryKeyName"),D=c((e,r)=>`${V(e,r)}_fk`,"getRelationName"),O=c((e,r)=>`${V(e,r)}_ck`,"getConstraintName"),V=c((e,r)=>`${e}_${(0,se.toSnakeCase)(r.replaceAll(":","_"))}`,"getName");var B;(i=>{i.prepareCreate=c((n,s,u)=>{let p={constraints:[],validations:[]};for(let a in u){let m=u[a];if((0,R.isEnumSchema)(m)||(0,R.isScalarSchema)(m)&&(0,Q.isNotNullish)(m.definitions?.value)){let l=O(s,a);p.constraints.push({check:k(n,l),query:x(n,s,l,a,m).build()}),p.validations.push({check:ee(n,l),query:h(n,s,l).build(),name:l})}}return p},"prepareCreate"),i.prepareUpdate=c((n,s,u,p,a)=>{let m={constraints:[],validations:[]};for(let l in a){let{update:S,create:q,remove:P,nested:C}=a[l],$=[];if(P||S||C){let F=p.properties[l],X={...P,...S,...C};if(t(F,X)){let j=O(s,l);$.push({query:d(n,s,j).build()})}}if(q||S||C){let F=u.properties[l],X={...q,...S,...C};if(t(F,X)){let j=O(s,l),le=$.length;$.push({...!le&&{check:k(n,j)},query:x(n,s,j,l,F).build()}),m.validations.push({check:ee(n,j),query:h(n,s,j).build(),name:j})}}m.constraints.push(...$)}return m},"prepareUpdate"),i.prepareRenameTable=c((n,s,u,p)=>{let a=[];for(let m in p){let l=p[m];if(o(l)){let S=O(s,m),q=O(u,m),P=n.table(u).alter().existing().constraint(S).rename(q);a.push({check:k(n,q),query:P.build()})}}return a},"prepareRenameTable"),i.prepareRenameColumns=c((n,s,u,p)=>{let a=[];for(let m in p){let l=p[m],S=u[l];if(o(S)){let q=O(s,m),P=O(s,l),C=n.table(s).alter().existing().constraint(q).rename(P);a.push({check:k(n,P),query:C.build()})}}return a},"prepareRenameColumns"),i.prepareDelete=c((n,s,u)=>{let p=[];for(let a in u){let m=u[a];if(o(m)){let l=O(s,a);p.push({query:d(n,s,l).build()})}}return p},"prepareDelete");let d=c((n,s,u)=>n.table(s).alter().existing().constraint(u).drop().existing(),"getDeleteQuery"),h=c((n,s,u)=>n.table(s).alter().existing().constraint(u).validate(),"getValidationQuery"),x=c((n,s,u,p,a)=>{let m=n.table(s).alter().existing().constraint(u);switch(a.type){case R.SchemaType.Enum:{let l=a.options.map(({value:q})=>`${q}`);m.check({[p]:{isIn:l}}).validate(!1);break}case R.SchemaType.Boolean:case R.SchemaType.Number:case R.SchemaType.String:{m.check({[p]:{equal:a.definitions?.value}}).validate(!1);break}}return m},"getCreateQuery"),o=c(n=>(0,R.isEnumSchema)(n)||(0,R.isScalarSchema)(n)&&(0,Q.isNotNullish)(n.definitions?.value),"isConstrainedSchema"),t=c((n,s)=>{switch(n.type){case R.SchemaType.Boolean:case R.SchemaType.Number:case R.SchemaType.String:return(0,Q.isNotNullish)(s.definitions?.value)||(0,Q.isNotNullish)(s.definitions?.update?.value);case R.SchemaType.Enum:return(0,Q.isNotNullish)(s.options)}return!1},"isConstrainedChange")})(B||={});var ie=require("@ez4/pgclient/utils"),ae=require("@ez4/schema"),te=require("@ez4/database");var M;(x=>{x.prepareCreate=c((o,t,i,n)=>{let s=[];for(let u in n){let p=n[u];if(g(p))continue;let{[p.targetColumn]:a}=i.properties,m=D(t,u),l=!!(0,ae.isNullishSchema)(a);s.push({check:k(o,m),query:h(o,t,m,p,l).build()})}return s},"prepareCreate"),x.prepareUpdate=c((o,t,i,n)=>{let s=[];for(let u in i){let p=i[u];if(g(p))continue;let a=n[p.targetColumn]?.update,m=a?.optional??a?.nullable;if(m===void 0)continue;let l=D(t,u);s.push({query:d(o,t,l).build()},{query:h(o,t,l,p,m).build()})}return s},"prepareUpdate"),x.prepareRename=c((o,t,i,n)=>{let s=[];for(let u in n){let p=n[u];if(g(p))continue;let a=D(t,u),m=D(i,u),l=o.table(i).alter().existing().constraint(a).rename(m);s.push({check:k(o,m),query:l.build()})}return s},"prepareRename"),x.prepareDelete=c((o,t,i)=>{let n=[];for(let s in i){let u=i[s];if(g(u))continue;let p=D(t,s);n.push({query:d(o,t,p).build()})}return n},"prepareDelete");let g=c(o=>{let{sourceIndex:t,targetIndex:i}=o;return!t||t===te.Index.Secondary||i===te.Index.Primary},"isNotRealRelation"),d=c((o,t,i)=>o.table(t).alter().existing().constraint(i).drop().existing(),"getDeleteQuery"),h=c((o,t,i,n,s)=>{let{sourceTable:u,sourceColumn:p,targetColumn:a}=n,m=(0,ie.getTableName)(u),l=o.table(t).alter().existing().constraint(i),S=l.foreign(a,m,[p]).validate(!1);return s?S.delete().null():S.delete().cascade(),S.update().cascade(),l},"getCreateQuery")})(M||={});var K=require("@ez4/schema"),N=require("@ez4/database");var T;(x=>{x.prepareCreate=c((o,t,i,n)=>{let s={constraints:[],validations:[],indexes:[]};for(let u in n){let{columns:p,type:a,name:m}=n[u];switch(a){default:throw new Error("Unsupported index type.");case N.Index.Primary:{let l=I(t,m);s.constraints.push({check:k(o,l),query:o.table(t).alter().existing().constraint(l).primary(p).build()});break}case N.Index.Unique:{let l=A(t,m),S=h(p,i);s.indexes.push({query:o.index(l).create(t,p).type(S).unique().concurrent().missing().build()}),s.validations.push({query:(0,x.getValidationQuery)(o,l),name:l});break}case N.Index.Secondary:{let l=z(t,m),S=h(p,i);s.indexes.push({query:o.index(l).create(t,p).type(S).concurrent().missing().build()}),s.validations.push({query:(0,x.getValidationQuery)(o,l),name:l});break}}}return s},"prepareCreate"),x.prepareUpdate=c((o,t,i,n,s,u)=>{let p={constraints:[],validations:[],indexes:[]};for(let a in u){let{update:m,create:l,remove:S}=u[a];if(S||m){let q=(0,x.prepareDelete)(o,t,{[a]:n[a]});p.constraints.push(...q.constraints),p.indexes.push(...q.indexes)}if(l||m){let q=(0,x.prepareCreate)(o,t,i,{[a]:s[a]});p.constraints.push(...q.constraints),p.indexes.push(...q.indexes)}}return p},"prepareUpdate"),x.prepareRenameTable=c((o,t,i,n)=>{let s={validations:[],constraints:[],indexes:[]};for(let u in n){let{type:p,name:a}=n[u];switch(p){default:throw new Error("Unsupported index type.");case N.Index.Primary:{let m=I(t,a),l=I(i,a);s.constraints.push({check:k(o,l),query:o.table(i).alter().existing().constraint(m).rename(l).build()});break}case N.Index.Unique:{let m=A(t,a),l=A(i,a);s.indexes.push({query:o.index(m).rename(l).existing().build()});break}case N.Index.Secondary:{let m=z(t,a),l=z(i,a);s.indexes.push({query:o.index(m).rename(l).existing().build()});break}}}return s},"prepareRenameTable"),x.prepareRenameColumns=c((o,t,i,n)=>{let s={validations:[],constraints:[],indexes:[]};for(let u in n){let p=n[u],{type:a}=i[p];switch(a){default:throw new Error("Unsupported index type.");case N.Index.Primary:{let m=I(t,u),l=I(t,p);s.constraints.push({check:k(o,l),query:o.table(t).alter().existing().constraint(m).rename(l).build()});break}case N.Index.Unique:{let m=A(t,u),l=A(t,p);s.indexes.push({query:o.index(m).rename(l).existing().build()});break}case N.Index.Secondary:{let m=z(t,u),l=z(t,p);s.indexes.push({query:o.index(m).rename(l).existing().build()});break}}}return s},"prepareRenameColumns"),x.prepareDelete=c((o,t,i)=>{let n={validations:[],constraints:[],indexes:[]};for(let s in i){let{type:u,name:p}=i[s];switch(u){default:throw new Error("Unsupported index type.");case N.Index.Primary:{let a=I(t,p),m=o.table(t).alter().existing().constraint(a).drop().existing();n.constraints.push({query:m.build()});break}case N.Index.Unique:{let a=A(t,p),m=o.index(a).drop().existing().concurrent();n.indexes.push({query:m.build()});break}case N.Index.Secondary:{let a=z(t,p),m=o.index(a).drop().existing().concurrent();n.indexes.push({query:m.build()});break}}}return n},"prepareDelete"),x.getValidationQuery=c((o,t)=>{let[i]=o.select().rawColumn(1).from("pg_index").where({indexrelid:o.rawValue(`${o.rawString(t).build()}::regclass`),indisvalid:o.rawValue("false"),indisready:o.rawValue("true")}).build();return i},"getValidationQuery");let h=c((o,t)=>{if(o.length===1){let[i]=o;switch(t.properties[i]?.type){case K.SchemaType.Object:case K.SchemaType.Union:case K.SchemaType.Array:case K.SchemaType.Tuple:return"GIN"}}return"BTREE"},"getIndexType")})(T||={});var ne=require("@ez4/database");var b=require("@ez4/schema"),ce=require("@ez4/utils");var L=c(e=>!!(e.nullable||e.optional),"isOptionalColumn"),_=c((e,r)=>{if((0,b.isScalarSchema)(e)||(0,b.isObjectSchema)(e)||(0,b.isArraySchema)(e)||(0,b.isTupleSchema)(e)){let{definitions:y}=e;switch(typeof y?.default){case"boolean":case"number":return`${y.default}`;case"string":return`'${y.default}'`;case"object":return`'${JSON.stringify(y.default)}'`}}if((0,b.isEnumSchema)(e)){let{definitions:y}=e;if(y?.default)return`'${y.default}'`}if((0,b.isStringSchema)(e)&&r)switch(e.format){case"date-time":case"date":case"time":return"now()";case"uuid":return"gen_random_uuid()"}if(L(e))return"null"},"getColumnDefault"),G=c((e,r)=>{switch(e.type){case b.SchemaType.Array:case b.SchemaType.Object:case b.SchemaType.Reference:case b.SchemaType.Union:case b.SchemaType.Tuple:return"jsonb";case b.SchemaType.Boolean:return"boolean";case b.SchemaType.Enum:return"text";case b.SchemaType.Number:return Ce(e,r);case b.SchemaType.String:return Re(e)}},"getColumnType"),Ce=c((e,r)=>e.format==="integer"?r?"bigserial":"bigint":"decimal","getColumNumberType"),Re=c(e=>{switch(e.format){case"uuid":case"time":case"date":return e.format;case"date-time":return"timestamptz";default:let r=e.definitions?.maxLength;return(0,ce.isAnyNumber)(r)?`varchar(${r})`:"text"}},"getColumnTextType");var E;(g=>(g.prepareCreate=c((d,h,x,o)=>{let t=d.table(h).alter().existing();for(let i in o){let n=o[i],u=x[i]?.type===ne.Index.Primary,p=!L(n),a=G(n,u),m=_(n,u);t.add(i,a,p,m).missing()}return{query:t.build()}},"prepareCreate"),g.prepareUpdate=c((d,h,x,o,t)=>{let i=[];for(let n in t){let{create:s,update:u,nested:p,remove:a}=t[n],m=x.properties[n],S=o[n]?.type===ne.Index.Primary,q=d.table(h).alter().existing().column(n);if(s){let P=s.definitions?.default,C=s?.nullable;P!==void 0&&q.default(_(m,S)),!S&&C!==void 0&&q.optional(C)}if(u||p){let P=p?.definitions?.update?.default,C=u?.nullable;u?.type!==void 0&&q.type(G(m,S)),P!==void 0&&q.default(_(m,S)),!S&&C!==void 0&&q.optional(C)}if(a){let P=a.definitions?.default,C=a?.nullable;P!==void 0&&q.default(null),!S&&C!==void 0&&q.required(C)}q.empty||i.push({check:Z(d,h,n),query:q.build()})}return i},"prepareUpdate"),g.prepareRename=c((d,h,x)=>{let o=[];for(let t in x){let i=x[t],n=d.table(h).alter().existing().rename(t,i);o.push({check:Z(d,h,t),query:n.build()})}return o},"prepareRename"),g.prepareDelete=c((d,h,x)=>{let o=d.table(h).alter().existing();for(let t in x)o.drop(t).existing();return{query:o.build()}},"prepareDelete")))(E||={});var pe=require("@ez4/database");var J;(f=>(f.prepareCreate=c((g,d,h,x)=>{let o=g.table(d).create().missing();for(let t in h.properties){let i=h.properties[t],s=x[t]?.type===pe.Index.Primary,u=!L(i),p=G(i,s),a=_(i,s);o.column(t,p,u,a).missing()}return{query:o.build()}},"prepareCreate"),f.prepareRename=c((g,d,h)=>({query:g.table(d).rename(h).existing().build()}),"prepareRename"),f.prepareDelete=c((g,d)=>({query:g.table(d).drop().existing().cascade().build()}),"prepareDelete")))(J||={});var me=c(e=>{let r=new W.SqlBuilder,y={tables:[],constraints:[],validations:[],relations:[],indexes:[]};for(let f in e){let{name:g,schema:d,indexes:h,relations:x}=e[f];y.tables.push(J.prepareCreate(r,g,d,h)),y.relations.push(...M.prepareCreate(r,g,d,x)),v(y,B.prepareCreate(r,g,d.properties)),v(y,T.prepareCreate(r,g,d,h))}return y},"getCreateQueries"),Pe=c((e,r)=>{let y=oe(e,r),f=new W.SqlBuilder,g={create:re(),update:re(),delete:re()};if(y.create&&v(g.create,me(y.create)),y.rename)for(let d in y.rename){let h=y.rename[d],x=e[h].indexes,o=e[h].relations,t=e[h].schema;g.update.tables.push(J.prepareRename(f,d,h)),g.update.constraints.push(...B.prepareRenameTable(f,d,h,t.properties)),g.update.relations.push(...M.prepareRename(f,d,h,o)),v(g.update,T.prepareRenameTable(f,d,h,x))}if(y.nested)for(let d in y.nested){let{nested:h}=y.nested[d];if(!h)continue;let{schema:x,relations:o,indexes:t}=h,i=x?.nested?.properties,n=e[d].relations,s=r[d].indexes,u=e[d].indexes,p=r[d].schema,a=e[d].schema;i?.create&&(g.create.tables.push(E.prepareCreate(f,d,u,i.create)),v(g.create,B.prepareCreate(f,d,i.create))),i?.nested&&(g.update.tables.push(...E.prepareUpdate(f,d,a,u,i.nested)),v(g.update,B.prepareUpdate(f,d,a,p,i.nested)),g.update.relations.push(...M.prepareUpdate(f,d,n,i.nested))),i?.rename&&(g.update.tables.push(...E.prepareRename(f,d,i.rename)),g.update.constraints.push(...B.prepareRenameColumns(f,d,a.properties,i.rename))),i?.remove&&(g.delete.tables.push(E.prepareDelete(f,d,i.remove)),g.delete.constraints.push(...B.prepareDelete(f,d,i.remove))),t?.create&&v(g.update,T.prepareCreate(f,d,a,t.create)),t?.nested&&v(g.update,T.prepareUpdate(f,d,a,s,u,t.nested)),t?.rename&&v(g.update,T.prepareRenameColumns(f,d,u,t.rename)),t?.remove&&v(g.delete,T.prepareDelete(f,d,t.remove)),o?.create&&g.update.relations.push(...M.prepareCreate(f,d,a,o.create)),o?.remove&&g.delete.relations.push(...M.prepareDelete(f,d,o.remove))}return y.remove&&v(g.delete,ue(y.remove)),g},"getUpdateStepQueries"),ue=c(e=>{let r=new W.SqlBuilder,y={tables:[],constraints:[],validations:[],relations:[],indexes:[]};for(let f in e){let{name:g}=e[f];y.tables.push(J.prepareDelete(r,g))}return y},"getDeleteQueries"),v=c((e,r)=>{r.tables&&e.tables.push(...r.tables),r.constraints&&e.constraints.push(...r.constraints),r.validations&&e.validations.push(...r.validations),r.relations&&e.relations.push(...r.relations),r.indexes&&e.indexes.push(...r.indexes)},"combineQueries"),re=c(()=>({tables:[],constraints:[],validations:[],relations:[],indexes:[]}),"getStepQueries");0&&(module.exports={getCreateQueries,getDeleteQueries,getUpdateStepQueries});
|
|
2
2
|
//# sourceMappingURL=main.cjs.map
|
package/dist/main.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var me=Object.defineProperty;var a=(e,c)=>me(e,"name",{value:c,configurable:!0});import{SqlBuilder as X}from"@ez4/pgsql";import{deepEqual as re,deepCompareObject as ue,isAnyObject as Y,toSnakeCase as Z}from"@ez4/utils";import{isTableMetadata as ee,isTableIndex as te}from"@ez4/pgclient/library";import{isAnySchema as ne}from"@ez4/schema";var oe=a((e,c)=>ue(e,c,{onCompareName:a((y,f)=>{let g=new Set(Z(y).split("_")),d=new Set(Z(f).split("_"));for(let h of d)if(h.length>1&&g.has(h))return!0;return!1},"onCompareName"),onRename:a((y,f)=>!Y(y)||!Y(f)?!1:ee(y)&&ee(f)?le(y.schema,f.schema):te(y)&&te(f)?de(y,f):ne(y)&&ne(f)?ge(y,f):!1,"onRename")}),"getTableRepositoryChanges"),le=a((e,c)=>re(Object.keys(e.properties),Object.keys(c.properties)),"canRenameTable"),de=a((e,c)=>e.type===c.type,"canRenameIndex"),ge=a((e,c)=>re(e,c,{depth:1,include:{type:!0,definitions:!0,nullable:!0,format:!0}}),"canRenameColumn");import{isEnumSchema as se,isScalarSchema as ie,SchemaType as v}from"@ez4/schema";import{isNotNullish as E}from"@ez4/utils";var R=a((e,c)=>{let[y]=e.select().rawColumn(1).from("pg_constraint").where({conname:e.rawString(c)}).build();return y},"getCheckConstraintQuery"),F=a((e,c,y)=>{let[f]=e.select().rawColumn(1).where({NOT:{exists:e.select().from(e.rawValue("information_schema.columns")).rawColumn(1).where({column_name:e.rawString(y),table_name:e.rawString(c)})}}).build();return f},"getCheckColumnQuery"),H=a((e,c)=>{let[y]=e.select().rawColumn(1).from("pg_constraint").where({convalidated:e.rawValue("true"),conname:e.rawString(c)}).build();return y},"getCheckConstraintValidatedQuery");import{toSnakeCase as ye}from"@ez4/utils";var j=a((e,c)=>`${_(e,c)}_pk`,"getPrimaryKeyName"),I=a((e,c)=>`${_(e,c)}_uk`,"getUniqueKeyName"),A=a((e,c)=>`${_(e,c)}_sk`,"getSecondaryKeyName"),M=a((e,c)=>`${_(e,c)}_fk`,"getRelationName"),w=a((e,c)=>`${_(e,c)}_ck`,"getConstraintName"),_=a((e,c)=>`${e}_${ye(c.replaceAll(":","_"))}`,"getName");var O;(s=>{s.prepareCreate=a((n,o,u)=>{let p={constraints:[],validations:[]};for(let i in u){let m=u[i];if(se(m)||ie(m)&&E(m.definitions?.value)){let l=w(o,i);p.constraints.push({check:R(n,l),query:x(n,o,l,i,m).build()}),p.validations.push({check:H(n,l),query:h(n,o,l).build(),name:l})}}return p},"prepareCreate"),s.prepareUpdate=a((n,o,u,p,i)=>{let m={constraints:[],validations:[]};for(let l in i){let{update:S,create:q,remove:C,nested:b}=i[l],Q=[];if(C||S||b){let L=p.properties[l],J={...C,...S,...b};if(t(L,J)){let T=w(o,l);Q.push({query:d(n,o,T).build()})}}if(q||S||b){let L=u.properties[l],J={...q,...S,...b};if(t(L,J)){let T=w(o,l),pe=Q.length;Q.push({...!pe&&{check:R(n,T)},query:x(n,o,T,l,L).build()}),m.validations.push({check:H(n,T),query:h(n,o,T).build(),name:T})}}m.constraints.push(...Q)}return m},"prepareUpdate"),s.prepareRenameTable=a((n,o,u,p)=>{let i=[];for(let m in p){let l=p[m];if(r(l)){let S=w(o,m),q=w(u,m),C=n.table(u).alter().existing().constraint(S).rename(q);i.push({check:R(n,q),query:C.build()})}}return i},"prepareRenameTable"),s.prepareRenameColumns=a((n,o,u,p)=>{let i=[];for(let m in p){let l=p[m],S=u[l];if(r(S)){let q=w(o,m),C=w(o,l),b=n.table(o).alter().existing().constraint(q).rename(C);i.push({check:R(n,C),query:b.build()})}}return i},"prepareRenameColumns"),s.prepareDelete=a((n,o,u)=>{let p=[];for(let i in u){let m=u[i];if(r(m)){let l=w(o,i);p.push({query:d(n,o,l).build()})}}return p},"prepareDelete");let d=a((n,o,u)=>n.table(o).alter().existing().constraint(u).drop().existing(),"getDeleteQuery"),h=a((n,o,u)=>n.table(o).alter().existing().constraint(u).validate(),"getValidationQuery"),x=a((n,o,u,p,i)=>{let m=n.table(o).alter().existing().constraint(u);switch(i.type){case v.Enum:{let l=i.options.map(({value:q})=>`${q}`);m.check({[p]:{isIn:l}}).validate(!1);break}case v.Boolean:case v.Number:case v.String:{m.check({[p]:{equal:i.definitions?.value}}).validate(!1);break}}return m},"getCreateQuery"),r=a(n=>se(n)||ie(n)&&E(n.definitions?.value),"isConstrainedSchema"),t=a((n,o)=>{switch(n.type){case v.Boolean:case v.Number:case v.String:return E(o.definitions?.value)||E(o.definitions?.update?.value);case v.Enum:return E(o.options)}return!1},"isConstrainedChange")})(O||={});import{getTableName as fe}from"@ez4/pgclient/utils";import{isNullishSchema as he}from"@ez4/schema";import{Index as ae}from"@ez4/database";var z;(x=>{x.prepareCreate=a((r,t,s,n)=>{let o=[];for(let u in n){let p=n[u];if(g(p))continue;let{[p.targetColumn]:i}=s.properties,m=M(t,u),l=!!he(i);o.push({check:R(r,m),query:h(r,t,m,p,l).build()})}return o},"prepareCreate"),x.prepareUpdate=a((r,t,s,n)=>{let o=[];for(let u in s){let p=s[u];if(g(p))continue;let i=n[p.targetColumn]?.update,m=i?.optional??i?.nullable;if(m===void 0)continue;let l=M(t,u);o.push({query:d(r,t,l).build()},{query:h(r,t,l,p,m).build()})}return o},"prepareUpdate"),x.prepareRename=a((r,t,s,n)=>{let o=[];for(let u in n){let p=n[u];if(g(p))continue;let i=M(t,u),m=M(s,u),l=r.table(s).alter().existing().constraint(i).rename(m);o.push({check:R(r,m),query:l.build()})}return o},"prepareRename"),x.prepareDelete=a((r,t,s)=>{let n=[];for(let o in s){let u=s[o];if(g(u))continue;let p=M(t,o);n.push({query:d(r,t,p).build()})}return n},"prepareDelete");let g=a(r=>{let{sourceIndex:t,targetIndex:s}=r;return!t||t===ae.Secondary||s===ae.Primary},"isNotRealRelation"),d=a((r,t,s)=>r.table(t).alter().existing().constraint(s).drop().existing(),"getDeleteQuery"),h=a((r,t,s,n,o)=>{let{sourceTable:u,sourceColumn:p,targetColumn:i}=n,m=fe(u),l=r.table(t).alter().existing().constraint(s),S=l.foreign(i,m,[p]).validate(!1);return o?S.delete().null():S.delete().cascade(),S.update().cascade(),l},"getCreateQuery")})(z||={});import{SchemaType as G}from"@ez4/schema";import{Index as P}from"@ez4/database";var B;(x=>{x.prepareCreate=a((r,t,s,n)=>{let o={constraints:[],validations:[],indexes:[]};for(let u in n){let{columns:p,type:i,name:m}=n[u];switch(i){default:throw new Error("Unsupported index type.");case P.Primary:{let l=j(t,m);o.constraints.push({check:R(r,l),query:r.table(t).alter().existing().constraint(l).primary(p).build()});break}case P.Unique:{let l=I(t,m),S=h(p,s);o.indexes.push({query:r.index(l).create(t,p).type(S).unique().concurrent().missing().build()}),o.validations.push({query:(0,x.getValidationQuery)(r,l),name:l});break}case P.Secondary:{let l=A(t,m),S=h(p,s);o.indexes.push({query:r.index(l).create(t,p).type(S).concurrent().missing().build()}),o.validations.push({query:(0,x.getValidationQuery)(r,l),name:l});break}}}return o},"prepareCreate"),x.prepareUpdate=a((r,t,s,n,o,u)=>{let p={constraints:[],validations:[],indexes:[]};for(let i in u){let{update:m,create:l,remove:S}=u[i];if(S||m){let q=(0,x.prepareDelete)(r,t,{[i]:n[i]});p.constraints.push(...q.constraints),p.indexes.push(...q.indexes)}if(l||m){let q=(0,x.prepareCreate)(r,t,s,{[i]:o[i]});p.constraints.push(...q.constraints),p.indexes.push(...q.indexes)}}return p},"prepareUpdate"),x.prepareRenameTable=a((r,t,s,n)=>{let o={validations:[],constraints:[],indexes:[]};for(let u in n){let{type:p,name:i}=n[u];switch(p){default:throw new Error("Unsupported index type.");case P.Primary:{let m=j(t,i),l=j(s,i);o.constraints.push({check:R(r,l),query:r.table(s).alter().existing().constraint(m).rename(l).build()});break}case P.Unique:{let m=I(t,i),l=I(s,i);o.indexes.push({query:r.index(m).rename(l).existing().build()});break}case P.Secondary:{let m=A(t,i),l=A(s,i);o.indexes.push({query:r.index(m).rename(l).existing().build()});break}}}return o},"prepareRenameTable"),x.prepareRenameColumns=a((r,t,s,n)=>{let o={validations:[],constraints:[],indexes:[]};for(let u in n){let p=n[u],{type:i}=s[p];switch(i){default:throw new Error("Unsupported index type.");case P.Primary:{let m=j(t,u),l=j(t,p);o.constraints.push({check:R(r,l),query:r.table(t).alter().existing().constraint(m).rename(l).build()});break}case P.Unique:{let m=I(t,u),l=I(t,p);o.indexes.push({query:r.index(l).rename(m).existing().build()});break}case P.Secondary:{let m=A(t,u),l=A(t,p);o.indexes.push({query:r.index(m).rename(l).existing().build()});break}}}return o},"prepareRenameColumns"),x.prepareDelete=a((r,t,s)=>{let n={validations:[],constraints:[],indexes:[]};for(let o in s){let{type:u,name:p}=s[o];switch(u){default:throw new Error("Unsupported index type.");case P.Primary:{let i=j(t,p),m=r.table(t).alter().existing().constraint(i).drop().existing();n.constraints.push({query:m.build()});break}case P.Unique:{let i=I(t,p),m=r.index(i).drop().existing().concurrent();n.indexes.push({query:m.build()});break}case P.Secondary:{let i=A(t,p),m=r.index(i).drop().existing().concurrent();n.indexes.push({query:m.build()});break}}}return n},"prepareDelete"),x.getValidationQuery=a((r,t)=>{let[s]=r.select().rawColumn(1).from("pg_index").where({indexrelid:r.rawValue(`${r.rawString(t).build()}::regclass`),indisvalid:r.rawValue("false"),indisready:r.rawValue("true")}).build();return s},"getValidationQuery");let h=a((r,t)=>{if(r.length===1){let[s]=r;switch(t.properties[s]?.type){case G.Object:case G.Union:case G.Array:case G.Tuple:return"GIN"}}return"BTREE"},"getIndexType")})(B||={});import{Index as ce}from"@ez4/database";import{isArraySchema as xe,isEnumSchema as Se,isObjectSchema as qe,isScalarSchema as be,isStringSchema as Ce,isTupleSchema as Re,SchemaType as k}from"@ez4/schema";import{isAnyNumber as Pe}from"@ez4/utils";var $=a(e=>!!(e.nullable||e.optional),"isOptionalColumn"),U=a((e,c)=>{if(be(e)||qe(e)||xe(e)||Re(e)){let{definitions:y}=e;switch(typeof y?.default){case"boolean":case"number":return`${y.default}`;case"string":return`'${y.default}'`;case"object":return`'${JSON.stringify(y.default)}'`}}if(Se(e)){let{definitions:y}=e;if(y?.default)return`'${y.default}'`}if(Ce(e)&&c)switch(e.format){case"date-time":case"date":case"time":return"now()";case"uuid":return"gen_random_uuid()"}if($(e))return"null"},"getColumnDefault"),V=a((e,c)=>{switch(e.type){case k.Array:case k.Object:case k.Reference:case k.Union:case k.Tuple:return"jsonb";case k.Boolean:return"boolean";case k.Enum:return"text";case k.Number:return Ne(e,c);case k.String:return we(e)}},"getColumnType"),Ne=a((e,c)=>e.format==="integer"?c?"bigserial":"bigint":"decimal","getColumNumberType"),we=a(e=>{switch(e.format){case"uuid":case"time":case"date":return e.format;case"date-time":return"timestamptz";default:let c=e.definitions?.maxLength;return Pe(c)?`varchar(${c})`:"text"}},"getColumnTextType");var D;(g=>(g.prepareCreate=a((d,h,x,r)=>{let t=d.table(h).alter().existing();for(let s in r){let n=r[s],u=x[s]?.type===ce.Primary,p=!$(n),i=V(n,u),m=U(n,u);t.add(s,i,p,m).missing()}return{query:t.build()}},"prepareCreate"),g.prepareUpdate=a((d,h,x,r,t)=>{let s=[];for(let n in t){let{create:o,update:u,nested:p,remove:i}=t[n],m=x.properties[n],S=r[n]?.type===ce.Primary,q=d.table(h).alter().existing().column(n);if(o){let C=o.definitions?.default,b=o?.nullable;C!==void 0&&q.default(U(m,S)),!S&&b!==void 0&&q.optional(b)}if(u||p){let C=p?.definitions?.update?.default,b=u?.nullable;u?.type!==void 0&&q.type(V(m,S)),C!==void 0&&q.default(U(m,S)),!S&&b!==void 0&&q.optional(b)}if(i){let C=i.definitions?.default,b=i?.nullable;C!==void 0&&q.default(null),!S&&b!==void 0&&q.required(b)}q.empty||s.push({check:F(d,h,n),query:q.build()})}return s},"prepareUpdate"),g.prepareRename=a((d,h,x)=>{let r=[];for(let t in x){let s=x[t],n=d.table(h).alter().existing().rename(t,s);r.push({check:F(d,h,t),query:n.build()})}return r},"prepareRename"),g.prepareDelete=a((d,h,x)=>{let r=d.table(h).alter().existing();for(let t in x)r.drop(t).existing();return{query:r.build()}},"prepareDelete")))(D||={});import{Index as ke}from"@ez4/database";var K;(f=>(f.prepareCreate=a((g,d,h,x)=>{let r=g.table(d).create().missing();for(let t in h.properties){let s=h.properties[t],o=x[t]?.type===ke.Primary,u=!$(s),p=V(s,o),i=U(s,o);r.column(t,p,u,i).missing()}return{query:r.build()}},"prepareCreate"),f.prepareRename=a((g,d,h)=>({query:g.table(d).rename(h).existing().build()}),"prepareRename"),f.prepareDelete=a((g,d)=>({query:g.table(d).drop().existing().cascade().build()}),"prepareDelete")))(K||={});var ve=a(e=>{let c=new X,y={tables:[],constraints:[],validations:[],relations:[],indexes:[]};for(let f in e){let{name:g,schema:d,indexes:h,relations:x}=e[f];y.tables.push(K.prepareCreate(c,g,d,h)),y.relations.push(...z.prepareCreate(c,g,d,x)),N(y,O.prepareCreate(c,g,d.properties)),N(y,B.prepareCreate(c,g,d,h))}return y},"getCreateQueries"),wt=a((e,c)=>{let y=oe(e,c),f=new X,g={create:W(),update:W(),delete:W()};if(y.create&&N(g.create,ve(y.create)),y.rename)for(let d in y.rename){let h=y.rename[d],x=e[h].indexes,r=e[h].relations,t=e[h].schema;g.update.tables.push(K.prepareRename(f,d,h)),g.update.constraints.push(...O.prepareRenameTable(f,d,h,t.properties)),g.update.relations.push(...z.prepareRename(f,d,h,r)),N(g.update,B.prepareRenameTable(f,d,h,x))}if(y.nested)for(let d in y.nested){let{nested:h}=y.nested[d];if(!h)continue;let{schema:x,relations:r,indexes:t}=h,s=x?.nested?.properties,n=e[d].relations,o=c[d].indexes,u=e[d].indexes,p=c[d].schema,i=e[d].schema;s?.create&&(g.create.tables.push(D.prepareCreate(f,d,u,s.create)),N(g.create,O.prepareCreate(f,d,s.create))),s?.nested&&(g.update.tables.push(...D.prepareUpdate(f,d,i,u,s.nested)),N(g.update,O.prepareUpdate(f,d,i,p,s.nested)),g.update.relations.push(...z.prepareUpdate(f,d,n,s.nested))),s?.rename&&(g.update.tables.push(...D.prepareRename(f,d,s.rename)),g.update.constraints.push(...O.prepareRenameColumns(f,d,i.properties,s.rename))),s?.remove&&(g.delete.tables.push(D.prepareDelete(f,d,s.remove)),g.delete.constraints.push(...O.prepareDelete(f,d,s.remove))),t?.create&&N(g.create,B.prepareCreate(f,d,i,t.create)),t?.nested&&N(g.update,B.prepareUpdate(f,d,i,o,u,t.nested)),t?.rename&&N(g.update,B.prepareRenameColumns(f,d,u,t.rename)),t?.remove&&N(g.delete,B.prepareDelete(f,d,t.remove)),r?.create&&g.create.relations.push(...z.prepareCreate(f,d,i,r.create)),r?.remove&&g.delete.relations.push(...z.prepareDelete(f,d,r.remove))}return y.remove&&N(g.delete,Oe(y.remove)),g},"getUpdateStepQueries"),Oe=a(e=>{let c=new X,y={tables:[],constraints:[],validations:[],relations:[],indexes:[]};for(let f in e){let{name:g}=e[f];y.tables.push(K.prepareDelete(c,g))}return y},"getDeleteQueries"),N=a((e,c)=>{c.tables&&e.tables.push(...c.tables),c.constraints&&e.constraints.push(...c.constraints),c.validations&&e.validations.push(...c.validations),c.relations&&e.relations.push(...c.relations),c.indexes&&e.indexes.push(...c.indexes)},"combineQueries"),W=a(()=>({tables:[],constraints:[],validations:[],relations:[],indexes:[]}),"getStepQueries");export{ve as getCreateQueries,Oe as getDeleteQueries,wt as getUpdateStepQueries};
|
|
1
|
+
var me=Object.defineProperty;var a=(e,c)=>me(e,"name",{value:c,configurable:!0});import{SqlBuilder as Y}from"@ez4/pgsql";import{deepEqual as F,deepCompareObject as ue,isAnyObject as Z,toSnakeCase as ee}from"@ez4/utils";import{isTableMetadata as te,isTableIndex as ne}from"@ez4/pgclient/library";import{isAnySchema as re}from"@ez4/schema";var oe=a((e,c)=>ue(e,c,{onCompareName:a((y,f)=>{let g=new Set(ee(y).split("_")),d=new Set(ee(f).split("_"));for(let h of d)if(h.length>1&&g.has(h))return!0;return!1},"onCompareName"),onRename:a((y,f)=>!Z(y)||!Z(f)?!1:te(y)&&te(f)?le(y.schema,f.schema):ne(y)&&ne(f)?de(y,f):re(y)&&re(f)?ge(y,f):!1,"onRename")}),"getTableRepositoryChanges"),le=a((e,c)=>F(Object.keys(e.properties),Object.keys(c.properties)),"canRenameTable"),de=a((e,c)=>e.type===c.type&&F(e.columns,c.columns),"canRenameIndex"),ge=a((e,c)=>F(e,c,{depth:1,include:{type:!0,definitions:!0,nullable:!0,format:!0}}),"canRenameColumn");import{isEnumSchema as se,isScalarSchema as ie,SchemaType as v}from"@ez4/schema";import{isNotNullish as E}from"@ez4/utils";var R=a((e,c)=>{let[y]=e.select().rawColumn(1).from("pg_constraint").where({conname:e.rawString(c)}).build();return y},"getCheckConstraintQuery"),H=a((e,c,y)=>{let[f]=e.select().rawColumn(1).where({NOT:{exists:e.select().from(e.rawValue("information_schema.columns")).rawColumn(1).where({column_name:e.rawString(y),table_name:e.rawString(c)})}}).build();return f},"getCheckColumnQuery"),W=a((e,c)=>{let[y]=e.select().rawColumn(1).from("pg_constraint").where({convalidated:e.rawValue("true"),conname:e.rawString(c)}).build();return y},"getCheckConstraintValidatedQuery");import{toSnakeCase as ye}from"@ez4/utils";var j=a((e,c)=>`${_(e,c)}_pk`,"getPrimaryKeyName"),I=a((e,c)=>`${_(e,c)}_uk`,"getUniqueKeyName"),A=a((e,c)=>`${_(e,c)}_sk`,"getSecondaryKeyName"),M=a((e,c)=>`${_(e,c)}_fk`,"getRelationName"),w=a((e,c)=>`${_(e,c)}_ck`,"getConstraintName"),_=a((e,c)=>`${e}_${ye(c.replaceAll(":","_"))}`,"getName");var O;(s=>{s.prepareCreate=a((n,o,u)=>{let p={constraints:[],validations:[]};for(let i in u){let m=u[i];if(se(m)||ie(m)&&E(m.definitions?.value)){let l=w(o,i);p.constraints.push({check:R(n,l),query:x(n,o,l,i,m).build()}),p.validations.push({check:W(n,l),query:h(n,o,l).build(),name:l})}}return p},"prepareCreate"),s.prepareUpdate=a((n,o,u,p,i)=>{let m={constraints:[],validations:[]};for(let l in i){let{update:S,create:q,remove:C,nested:b}=i[l],Q=[];if(C||S||b){let L=p.properties[l],J={...C,...S,...b};if(t(L,J)){let T=w(o,l);Q.push({query:d(n,o,T).build()})}}if(q||S||b){let L=u.properties[l],J={...q,...S,...b};if(t(L,J)){let T=w(o,l),pe=Q.length;Q.push({...!pe&&{check:R(n,T)},query:x(n,o,T,l,L).build()}),m.validations.push({check:W(n,T),query:h(n,o,T).build(),name:T})}}m.constraints.push(...Q)}return m},"prepareUpdate"),s.prepareRenameTable=a((n,o,u,p)=>{let i=[];for(let m in p){let l=p[m];if(r(l)){let S=w(o,m),q=w(u,m),C=n.table(u).alter().existing().constraint(S).rename(q);i.push({check:R(n,q),query:C.build()})}}return i},"prepareRenameTable"),s.prepareRenameColumns=a((n,o,u,p)=>{let i=[];for(let m in p){let l=p[m],S=u[l];if(r(S)){let q=w(o,m),C=w(o,l),b=n.table(o).alter().existing().constraint(q).rename(C);i.push({check:R(n,C),query:b.build()})}}return i},"prepareRenameColumns"),s.prepareDelete=a((n,o,u)=>{let p=[];for(let i in u){let m=u[i];if(r(m)){let l=w(o,i);p.push({query:d(n,o,l).build()})}}return p},"prepareDelete");let d=a((n,o,u)=>n.table(o).alter().existing().constraint(u).drop().existing(),"getDeleteQuery"),h=a((n,o,u)=>n.table(o).alter().existing().constraint(u).validate(),"getValidationQuery"),x=a((n,o,u,p,i)=>{let m=n.table(o).alter().existing().constraint(u);switch(i.type){case v.Enum:{let l=i.options.map(({value:q})=>`${q}`);m.check({[p]:{isIn:l}}).validate(!1);break}case v.Boolean:case v.Number:case v.String:{m.check({[p]:{equal:i.definitions?.value}}).validate(!1);break}}return m},"getCreateQuery"),r=a(n=>se(n)||ie(n)&&E(n.definitions?.value),"isConstrainedSchema"),t=a((n,o)=>{switch(n.type){case v.Boolean:case v.Number:case v.String:return E(o.definitions?.value)||E(o.definitions?.update?.value);case v.Enum:return E(o.options)}return!1},"isConstrainedChange")})(O||={});import{getTableName as fe}from"@ez4/pgclient/utils";import{isNullishSchema as he}from"@ez4/schema";import{Index as ae}from"@ez4/database";var z;(x=>{x.prepareCreate=a((r,t,s,n)=>{let o=[];for(let u in n){let p=n[u];if(g(p))continue;let{[p.targetColumn]:i}=s.properties,m=M(t,u),l=!!he(i);o.push({check:R(r,m),query:h(r,t,m,p,l).build()})}return o},"prepareCreate"),x.prepareUpdate=a((r,t,s,n)=>{let o=[];for(let u in s){let p=s[u];if(g(p))continue;let i=n[p.targetColumn]?.update,m=i?.optional??i?.nullable;if(m===void 0)continue;let l=M(t,u);o.push({query:d(r,t,l).build()},{query:h(r,t,l,p,m).build()})}return o},"prepareUpdate"),x.prepareRename=a((r,t,s,n)=>{let o=[];for(let u in n){let p=n[u];if(g(p))continue;let i=M(t,u),m=M(s,u),l=r.table(s).alter().existing().constraint(i).rename(m);o.push({check:R(r,m),query:l.build()})}return o},"prepareRename"),x.prepareDelete=a((r,t,s)=>{let n=[];for(let o in s){let u=s[o];if(g(u))continue;let p=M(t,o);n.push({query:d(r,t,p).build()})}return n},"prepareDelete");let g=a(r=>{let{sourceIndex:t,targetIndex:s}=r;return!t||t===ae.Secondary||s===ae.Primary},"isNotRealRelation"),d=a((r,t,s)=>r.table(t).alter().existing().constraint(s).drop().existing(),"getDeleteQuery"),h=a((r,t,s,n,o)=>{let{sourceTable:u,sourceColumn:p,targetColumn:i}=n,m=fe(u),l=r.table(t).alter().existing().constraint(s),S=l.foreign(i,m,[p]).validate(!1);return o?S.delete().null():S.delete().cascade(),S.update().cascade(),l},"getCreateQuery")})(z||={});import{SchemaType as G}from"@ez4/schema";import{Index as P}from"@ez4/database";var B;(x=>{x.prepareCreate=a((r,t,s,n)=>{let o={constraints:[],validations:[],indexes:[]};for(let u in n){let{columns:p,type:i,name:m}=n[u];switch(i){default:throw new Error("Unsupported index type.");case P.Primary:{let l=j(t,m);o.constraints.push({check:R(r,l),query:r.table(t).alter().existing().constraint(l).primary(p).build()});break}case P.Unique:{let l=I(t,m),S=h(p,s);o.indexes.push({query:r.index(l).create(t,p).type(S).unique().concurrent().missing().build()}),o.validations.push({query:(0,x.getValidationQuery)(r,l),name:l});break}case P.Secondary:{let l=A(t,m),S=h(p,s);o.indexes.push({query:r.index(l).create(t,p).type(S).concurrent().missing().build()}),o.validations.push({query:(0,x.getValidationQuery)(r,l),name:l});break}}}return o},"prepareCreate"),x.prepareUpdate=a((r,t,s,n,o,u)=>{let p={constraints:[],validations:[],indexes:[]};for(let i in u){let{update:m,create:l,remove:S}=u[i];if(S||m){let q=(0,x.prepareDelete)(r,t,{[i]:n[i]});p.constraints.push(...q.constraints),p.indexes.push(...q.indexes)}if(l||m){let q=(0,x.prepareCreate)(r,t,s,{[i]:o[i]});p.constraints.push(...q.constraints),p.indexes.push(...q.indexes)}}return p},"prepareUpdate"),x.prepareRenameTable=a((r,t,s,n)=>{let o={validations:[],constraints:[],indexes:[]};for(let u in n){let{type:p,name:i}=n[u];switch(p){default:throw new Error("Unsupported index type.");case P.Primary:{let m=j(t,i),l=j(s,i);o.constraints.push({check:R(r,l),query:r.table(s).alter().existing().constraint(m).rename(l).build()});break}case P.Unique:{let m=I(t,i),l=I(s,i);o.indexes.push({query:r.index(m).rename(l).existing().build()});break}case P.Secondary:{let m=A(t,i),l=A(s,i);o.indexes.push({query:r.index(m).rename(l).existing().build()});break}}}return o},"prepareRenameTable"),x.prepareRenameColumns=a((r,t,s,n)=>{let o={validations:[],constraints:[],indexes:[]};for(let u in n){let p=n[u],{type:i}=s[p];switch(i){default:throw new Error("Unsupported index type.");case P.Primary:{let m=j(t,u),l=j(t,p);o.constraints.push({check:R(r,l),query:r.table(t).alter().existing().constraint(m).rename(l).build()});break}case P.Unique:{let m=I(t,u),l=I(t,p);o.indexes.push({query:r.index(m).rename(l).existing().build()});break}case P.Secondary:{let m=A(t,u),l=A(t,p);o.indexes.push({query:r.index(m).rename(l).existing().build()});break}}}return o},"prepareRenameColumns"),x.prepareDelete=a((r,t,s)=>{let n={validations:[],constraints:[],indexes:[]};for(let o in s){let{type:u,name:p}=s[o];switch(u){default:throw new Error("Unsupported index type.");case P.Primary:{let i=j(t,p),m=r.table(t).alter().existing().constraint(i).drop().existing();n.constraints.push({query:m.build()});break}case P.Unique:{let i=I(t,p),m=r.index(i).drop().existing().concurrent();n.indexes.push({query:m.build()});break}case P.Secondary:{let i=A(t,p),m=r.index(i).drop().existing().concurrent();n.indexes.push({query:m.build()});break}}}return n},"prepareDelete"),x.getValidationQuery=a((r,t)=>{let[s]=r.select().rawColumn(1).from("pg_index").where({indexrelid:r.rawValue(`${r.rawString(t).build()}::regclass`),indisvalid:r.rawValue("false"),indisready:r.rawValue("true")}).build();return s},"getValidationQuery");let h=a((r,t)=>{if(r.length===1){let[s]=r;switch(t.properties[s]?.type){case G.Object:case G.Union:case G.Array:case G.Tuple:return"GIN"}}return"BTREE"},"getIndexType")})(B||={});import{Index as ce}from"@ez4/database";import{isArraySchema as xe,isEnumSchema as Se,isObjectSchema as qe,isScalarSchema as be,isStringSchema as Ce,isTupleSchema as Re,SchemaType as k}from"@ez4/schema";import{isAnyNumber as Pe}from"@ez4/utils";var $=a(e=>!!(e.nullable||e.optional),"isOptionalColumn"),U=a((e,c)=>{if(be(e)||qe(e)||xe(e)||Re(e)){let{definitions:y}=e;switch(typeof y?.default){case"boolean":case"number":return`${y.default}`;case"string":return`'${y.default}'`;case"object":return`'${JSON.stringify(y.default)}'`}}if(Se(e)){let{definitions:y}=e;if(y?.default)return`'${y.default}'`}if(Ce(e)&&c)switch(e.format){case"date-time":case"date":case"time":return"now()";case"uuid":return"gen_random_uuid()"}if($(e))return"null"},"getColumnDefault"),V=a((e,c)=>{switch(e.type){case k.Array:case k.Object:case k.Reference:case k.Union:case k.Tuple:return"jsonb";case k.Boolean:return"boolean";case k.Enum:return"text";case k.Number:return Ne(e,c);case k.String:return we(e)}},"getColumnType"),Ne=a((e,c)=>e.format==="integer"?c?"bigserial":"bigint":"decimal","getColumNumberType"),we=a(e=>{switch(e.format){case"uuid":case"time":case"date":return e.format;case"date-time":return"timestamptz";default:let c=e.definitions?.maxLength;return Pe(c)?`varchar(${c})`:"text"}},"getColumnTextType");var D;(g=>(g.prepareCreate=a((d,h,x,r)=>{let t=d.table(h).alter().existing();for(let s in r){let n=r[s],u=x[s]?.type===ce.Primary,p=!$(n),i=V(n,u),m=U(n,u);t.add(s,i,p,m).missing()}return{query:t.build()}},"prepareCreate"),g.prepareUpdate=a((d,h,x,r,t)=>{let s=[];for(let n in t){let{create:o,update:u,nested:p,remove:i}=t[n],m=x.properties[n],S=r[n]?.type===ce.Primary,q=d.table(h).alter().existing().column(n);if(o){let C=o.definitions?.default,b=o?.nullable;C!==void 0&&q.default(U(m,S)),!S&&b!==void 0&&q.optional(b)}if(u||p){let C=p?.definitions?.update?.default,b=u?.nullable;u?.type!==void 0&&q.type(V(m,S)),C!==void 0&&q.default(U(m,S)),!S&&b!==void 0&&q.optional(b)}if(i){let C=i.definitions?.default,b=i?.nullable;C!==void 0&&q.default(null),!S&&b!==void 0&&q.required(b)}q.empty||s.push({check:H(d,h,n),query:q.build()})}return s},"prepareUpdate"),g.prepareRename=a((d,h,x)=>{let r=[];for(let t in x){let s=x[t],n=d.table(h).alter().existing().rename(t,s);r.push({check:H(d,h,t),query:n.build()})}return r},"prepareRename"),g.prepareDelete=a((d,h,x)=>{let r=d.table(h).alter().existing();for(let t in x)r.drop(t).existing();return{query:r.build()}},"prepareDelete")))(D||={});import{Index as ke}from"@ez4/database";var K;(f=>(f.prepareCreate=a((g,d,h,x)=>{let r=g.table(d).create().missing();for(let t in h.properties){let s=h.properties[t],o=x[t]?.type===ke.Primary,u=!$(s),p=V(s,o),i=U(s,o);r.column(t,p,u,i).missing()}return{query:r.build()}},"prepareCreate"),f.prepareRename=a((g,d,h)=>({query:g.table(d).rename(h).existing().build()}),"prepareRename"),f.prepareDelete=a((g,d)=>({query:g.table(d).drop().existing().cascade().build()}),"prepareDelete")))(K||={});var ve=a(e=>{let c=new Y,y={tables:[],constraints:[],validations:[],relations:[],indexes:[]};for(let f in e){let{name:g,schema:d,indexes:h,relations:x}=e[f];y.tables.push(K.prepareCreate(c,g,d,h)),y.relations.push(...z.prepareCreate(c,g,d,x)),N(y,O.prepareCreate(c,g,d.properties)),N(y,B.prepareCreate(c,g,d,h))}return y},"getCreateQueries"),wt=a((e,c)=>{let y=oe(e,c),f=new Y,g={create:X(),update:X(),delete:X()};if(y.create&&N(g.create,ve(y.create)),y.rename)for(let d in y.rename){let h=y.rename[d],x=e[h].indexes,r=e[h].relations,t=e[h].schema;g.update.tables.push(K.prepareRename(f,d,h)),g.update.constraints.push(...O.prepareRenameTable(f,d,h,t.properties)),g.update.relations.push(...z.prepareRename(f,d,h,r)),N(g.update,B.prepareRenameTable(f,d,h,x))}if(y.nested)for(let d in y.nested){let{nested:h}=y.nested[d];if(!h)continue;let{schema:x,relations:r,indexes:t}=h,s=x?.nested?.properties,n=e[d].relations,o=c[d].indexes,u=e[d].indexes,p=c[d].schema,i=e[d].schema;s?.create&&(g.create.tables.push(D.prepareCreate(f,d,u,s.create)),N(g.create,O.prepareCreate(f,d,s.create))),s?.nested&&(g.update.tables.push(...D.prepareUpdate(f,d,i,u,s.nested)),N(g.update,O.prepareUpdate(f,d,i,p,s.nested)),g.update.relations.push(...z.prepareUpdate(f,d,n,s.nested))),s?.rename&&(g.update.tables.push(...D.prepareRename(f,d,s.rename)),g.update.constraints.push(...O.prepareRenameColumns(f,d,i.properties,s.rename))),s?.remove&&(g.delete.tables.push(D.prepareDelete(f,d,s.remove)),g.delete.constraints.push(...O.prepareDelete(f,d,s.remove))),t?.create&&N(g.update,B.prepareCreate(f,d,i,t.create)),t?.nested&&N(g.update,B.prepareUpdate(f,d,i,o,u,t.nested)),t?.rename&&N(g.update,B.prepareRenameColumns(f,d,u,t.rename)),t?.remove&&N(g.delete,B.prepareDelete(f,d,t.remove)),r?.create&&g.update.relations.push(...z.prepareCreate(f,d,i,r.create)),r?.remove&&g.delete.relations.push(...z.prepareDelete(f,d,r.remove))}return y.remove&&N(g.delete,Oe(y.remove)),g},"getUpdateStepQueries"),Oe=a(e=>{let c=new Y,y={tables:[],constraints:[],validations:[],relations:[],indexes:[]};for(let f in e){let{name:g}=e[f];y.tables.push(K.prepareDelete(c,g))}return y},"getDeleteQueries"),N=a((e,c)=>{c.tables&&e.tables.push(...c.tables),c.constraints&&e.constraints.push(...c.constraints),c.validations&&e.validations.push(...c.validations),c.relations&&e.relations.push(...c.relations),c.indexes&&e.indexes.push(...c.indexes)},"combineQueries"),X=a(()=>({tables:[],constraints:[],validations:[],relations:[],indexes:[]}),"getStepQueries");export{ve as getCreateQueries,Oe as getDeleteQueries,wt as getUpdateStepQueries};
|
|
2
2
|
//# sourceMappingURL=main.mjs.map
|