10 lines
16 KiB
JavaScript
10 lines
16 KiB
JavaScript
"use strict";exports.id=776,exports.ids=[776],exports.modules={10776:(e,a,t)=>{t.d(a,{A:()=>m});var l=t(29021),r=t.n(l),i=t(66866),n=t(41864);async function d({queryString:e,queryValuesArray:a}){let t;try{t=e&&a&&Array.isArray(a)&&a[0]?await (0,n.A)({query:e,values:a}):await (0,n.A)({query:e})}catch(e){console.log("Shell Vardb Error =>",e.message)}return t}function s({columnData:e,primaryKeySet:a}){let{fieldName:t,dataType:l,nullValue:r,primaryKey:i,autoIncrement:n,defaultValue:d,defaultValueLiteral:s,onUpdateLiteral:o,notNullValue:u}=e,_="";return _+=`\`${t}\` ${l}`,r?_+=" DEFAULT NULL":s?_+=` DEFAULT ${s}`:d?String(d).match(/uuid\(\)/i)?_+=" DEFAULT UUID()":_+=` DEFAULT '${d}'`:u&&(_+=" NOT NULL"),o&&(_+=` ON UPDATE ${o}`),i&&!a&&(_+=" PRIMARY KEY",a=!0),n&&(_+=" AUTO_INCREMENT",a=!0),{fieldEntryText:_,newPrimaryKeySet:a||!1}}async function o({dbFullName:e,tableName:a,tableInfoArray:l,tableSchema:r,recordedDbEntry:i}){let o=function({tableInfoArray:e}){let a=t(95610),l=e.filter(e=>e.primaryKey);return a.forEach(a=>{let t=e.filter(e=>e.fieldName===a.fieldName);t&&t[0]||("id"!==a.fieldName||l[0]?e.push(a):e.unshift(a))}),e}({tableInfoArray:l}),u=[];u.push(`CREATE TABLE IF NOT EXISTS \`${e}\`.\`${a}\` (`);try{if(!i)throw Error("Recorded Db entry not found!");let e=await d({queryString:"SELECT * FROM datasquirel.user_database_tables WHERE db_id = ? AND table_slug = ?",queryValuesArray:[i.id,r?.tableName]}),a=e?.[0];a?.id||await (0,n.A)({query:"INSERT INTO datasquirel.user_database_tables SET ?",values:{user_id:i.user_id,db_id:i.id,db_slug:i.db_slug,table_name:r?.tableFullName,table_slug:r?.tableName,child_table:r?.childTable?"1":null,child_table_parent_database:r?.childTableDbFullName||null,child_table_parent_table:r?.childTableName||null,date_created:Date(),date_created_code:Date.now(),date_updated:Date(),date_updated_code:Date.now()}})}catch(e){}let _=!1,E=[];for(let e=0;e<o.length;e++){let a=o[e],{fieldName:t,dataType:l,nullValue:r,primaryKey:i,autoIncrement:n,defaultValue:d,defaultValueLiteral:c,foreignKey:N,updatedField:b,onUpdate:A,onUpdateLiteral:S,onDelete:f,onDeleteLiteral:T,defaultField:m,encrypted:D,json:p,newTempField:R,notNullValue:y,originName:h,plainText:L,pattern:g,patternFlags:O,richText:$}=a;N&&E.push({...a});let{fieldEntryText:C,newPrimaryKeySet:v}=s({columnData:a,primaryKeySet:_});_=v;let I=E[0]?",":e===o.length-1?"":",";u.push(" "+C+I)}E[0]&&E.forEach((e,a,t)=>{let l=e.fieldName,r=e.foreignKey?.destinationTableName,i=e.foreignKey?.destinationTableColumnName,n=e.foreignKey?.cascadeDelete,d=e.foreignKey?.cascadeUpdate,s=e.foreignKey?.foreignKeyName,o=a===E.length-1?"":",";u.push(` CONSTRAINT \`${s}\` FOREIGN KEY (\`${l}\`) REFERENCES \`${r}\`(${i})${n?" ON DELETE CASCADE":""}${d?" ON UPDATE CASCADE":""}${o}`)}),u.push(") ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;");let c=u.join("\n");return await d({queryString:c})}let u=/^id$|^uuid$|^date_created$|^date_created_code$|^date_created_timestamp$|^date_updated$|^date_updated_code$|^date_updated_timestamp$/;async function _({dbFullName:e,tableName:a,tableInfoArray:t,userId:l,dbSchema:i,tableIndexes:o,tableSchema:_,clone:E,childDb:c,tableIndex:N,tableNameFull:b,recordedDbEntry:A}){let S=[],f=t;try{let t=[];if(t.push(`ALTER TABLE \`${e}\`.\`${a}\``),c)try{if(!A)throw Error("Recorded Db entry not found!");let e=await d({queryString:"SELECT * FROM datasquirel.user_database_tables WHERE db_id = ? AND table_slug = ?",queryValuesArray:[A.id,a]}),t=e?.[0];t?.id||await (0,n.A)({query:"INSERT INTO datasquirel.user_database_tables SET ?",values:{user_id:A.user_id,db_id:A.id,db_slug:A.db_slug,table_name:b,table_slug:a,child_table:_?.childTable?"1":null,child_table_parent_database:_?.childTableDbFullName||null,child_table_parent_table:_.childTableName||null,date_created:Date(),date_created_code:Date.now(),date_updated:Date(),date_updated_code:Date.now()}})}catch(e){}let N=await d({queryString:`SHOW INDEXES FROM \`${e}\`.\`${a}\``}),T=await d({queryString:`SHOW COLUMNS FROM \`${e}\`.\`${a}\``}),m=[];for(let t=0;t<T.length;t++){let{Field:n}=T[t];if(n.match(u))continue;let s=f.filter(e=>e.fieldName===n||e.originName===n);if(s&&s[0]){if(s[0].updatedField&&s[0].fieldName){m.push(s[0].fieldName),await d({queryString:`ALTER TABLE \`${e}\`.\`${a}\` RENAME COLUMN \`${s[0].originName}\` TO \`${s[0].fieldName}\``}),console.log(`Column Renamed from "${s[0].originName}" to "${s[0].fieldName}"`);try{let t=i.findIndex(a=>a.dbFullName===e),n=i[t].tables.findIndex(e=>e.tableName===a),d=i[t].tables[n].fields.findIndex(e=>e.fieldName===s[0].fieldName);delete i[t].tables[n].fields[d].originName,delete i[t].tables[n].fields[d].updatedField,f=i[t].tables[n].fields,r().writeFileSync(`${String(process.env.DSQL_USER_DB_SCHEMA_PATH)}/user-${l}/main.json`,JSON.stringify(i),"utf8")}catch(e){console.log("Update table error =>",e.message)}}continue}await d({queryString:`ALTER TABLE \`${e}\`.\`${a}\` DROP COLUMN \`${n}\``})}for(let t=0;t<N.length;t++){let{Key_name:l,Index_comment:r}=N[t];if(r?.match(/schema_index/))try{let e=o?.filter(e=>e.alias===l);if(!e?.[0])throw Error(`This Index(${l}) Has been Deleted!`)}catch(t){await d({queryString:`ALTER TABLE \`${e}\`.\`${a}\` DROP INDEX \`${l}\``})}}if(o&&o[0])for(let t=0;t<o.length;t++){let{indexType:l,indexName:r,indexTableFields:i,alias:n}=o[t];if(n?.match(/./))try{if(!N.filter(e=>e.Key_name===n)[0])throw Error("This Index Does not Exist")}catch(t){await d({queryString:`CREATE${l?.match(/fullText/i)?" FULLTEXT":""} INDEX \`${n}\` ON \`${e}\`.\`${a}\`(${i?.map(e=>e.value).map(e=>`\`${e}\``).join(",")}) COMMENT 'schema_index'`})}}let D=await d({queryString:`SELECT CONSTRAINT_NAME FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS WHERE CONSTRAINT_SCHEMA = '${e}' AND TABLE_NAME='${a}' AND CONSTRAINT_TYPE='FOREIGN KEY'`});if(D)for(let t=0;t<D.length;t++){let{CONSTRAINT_NAME:l}=D[t];l.match(/PRIMARY/)||await d({queryString:`ALTER TABLE \`${e}\`.\`${a}\` DROP FOREIGN KEY \`${l}\``})}for(let r=0;r<f.length;r++){let i;let n=f[r],o=f[r-1],u=f[r+1],{fieldName:_,dataType:c,nullValue:N,primaryKey:b,autoIncrement:A,defaultValue:m,defaultValueLiteral:D,foreignKey:p,updatedField:R}=n;if(_?.match(/^id$|^date_/))continue;let y="",h=T&&T[0]?T.filter((e,a)=>{if(e.Field===_)return i=a,!0}):null,{fieldEntryText:L}=s({columnData:n});if(h&&h[0]?.Field){let{Field:e,Type:a,Null:t,Key:n,Default:d,Extra:s}=h[0],E=r<i;(e!==_||E||c?.toUpperCase()!==a.toUpperCase())&&l?y+=`MODIFY COLUMN ${L}${E?o?.fieldName?" AFTER `"+o.fieldName+"`":u?.fieldName?" BEFORE `"+u.fieldName+"`":"":""}`:y+=`MODIFY COLUMN ${L}`}else o&&o.fieldName?y+=`ADD COLUMN ${L} AFTER \`${o.fieldName}\``:u&&u.fieldName?y+=`ADD COLUMN ${L} BEFORE \`${u.fieldName}\``:y+=`ADD COLUMN ${L}`;if(t.push(y+","),!E&&p){let{destinationTableName:t,destinationTableColumnName:l,cascadeDelete:r,cascadeUpdate:i,foreignKeyName:n}=p,s=`ADD CONSTRAINT \`${n}\` FOREIGN KEY (\`${_}\`) REFERENCES \`${t}\`(\`${l}\`)${r?" ON DELETE CASCADE":""}${i?" ON UPDATE CASCADE":""}`,o=`ALTER TABLE \`${e}\`.\`${a}\` ${s}`,u=await d({queryString:o});u?.serverStatus||S.push(u)}}let p=t.join(" ").replace(/,$/,"");if(t.length>1)return await d({queryString:p});return"No Changes Made to Table"}catch(e){return console.log('Error in "updateTable" shell function =>',e.message),"Error in Updating Table"}}var E=t(59338),c=t(6346),N=t(82535),b=t(98e3);async function A({userId:e,dbSchema:a}){try{let{dbFullName:t,dbName:l,dbSlug:r,dbDescription:i,dbImage:n,childDatabase:s,childDatabaseDbFullName:o}=a,u=e?await d({queryString:"SELECT * FROM datasquirel.user_databases WHERE db_full_name = ?",queryValuesArray:[t]}):void 0,_=u?.[0];if(!_?.id&&e){let a={user_id:(0,N.A)(e),db_name:l,db_slug:r,db_full_name:t,db_description:i,db_image:n,active_clone:s?1:void 0,active_clone_parent_db:o};(await (0,b.A)({data:a,tableName:"user_databases",forceLocal:!0})).insertId&&(u=await d({queryString:"SELECT * FROM datasquirel.user_databases WHERE db_full_name = ?",queryValuesArray:[t]}),_=u?.[0])}return _}catch(e){return}}var S=t(1111);async function f({userId:e,tableSchema:a,dbSchema:t,dbRecord:l,dbFullName:r}){if(a)try{let r=(0,S.A)({tableName:"user_database_tables",genObject:{query:{db_id:{value:String(l?.id)},table_slug:{value:a.tableName},user_id:{value:String(e)}}},dbFullName:"datasquirel"}),i=e?await d({queryString:r?.string||"",queryValuesArray:r?.values}):void 0,n=i?.[0];if(!n?.id&&e){let s={user_id:(0,N.A)(e),db_id:l?.id,db_slug:l?.db_slug,table_name:a.tableFullName,table_slug:a.tableName};if(a?.childTable&&a.childTableName){let e=t.find(e=>e.dbFullName==a.childTableDbFullName),l=e?.tables.find(e=>e.tableName==a.childTableName);e&&l&&(s.child_table=1,s.child_table_parent_database=e.dbFullName,s.child_table_parent_table=l.tableName)}(await (0,b.A)({data:s,tableName:"user_database_tables",dbContext:"Master",forceLocal:!0})).insertId&&(i=await d({queryString:r?.string||"",queryValuesArray:r?.values}),n=i?.[0])}return n}catch(e){return}}async function T({dbFullName:e,tableName:a,indexes:t}){for(let l=0;l<t.length;l++){let{indexType:r,indexName:i,indexTableFields:n,alias:s}=t[l];if(s?.match(/./))try{if(!(await d({queryString:`SHOW INDEXES FROM \`${e}\`.\`${a}\``})).filter(e=>e.Key_name===s)[0])throw Error("This Index Does not Exist")}catch(t){await d({queryString:`CREATE${r?.match(/fullText/i)?" FULLTEXT":""} INDEX \`${s}\` ON \`${e}\`.\`${a}\`(${n?.map(e=>e.value).map(e=>`\`${e}\``).join(",")}) COMMENT 'schema_index'`})}}}async function m({userId:e,targetDatabase:a,dbSchemaData:t}){let{userSchemaMainJSONFilePath:l,mainShemaJSONFilePath:s}=(0,c.A)({userId:e}),u=t||E.A.parse(r().readFileSync(l||s,"utf8"));if(!u){console.log("Schema Not Found!");return}for(let t=0;t<u.length;t++){let l=u[t],{dbFullName:r,tables:s,dbSlug:E,childrenDatabases:c}=l;if(a&&r!=a)continue;let N=await (0,i.A)(`SELECT SCHEMA_NAME AS dbFullName FROM INFORMATION_SCHEMA.SCHEMATA WHERE SCHEMA_NAME = '${r}'`);N?.[0]?.dbFullName||await (0,i.A)(`CREATE DATABASE IF NOT EXISTS \`${r}\` CHARACTER SET utf8mb4 COLLATE utf8mb4_bin`);let b=await (0,i.A)(`SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA='${r}'`),S=await A({dbSchema:l,userId:e});for(let a=0;a<b.length;a++){let{TABLE_NAME:t}=b[a];if(!s.filter(e=>e.tableName===t)[0]){let a=s.filter(e=>e.tableNameOld&&e.tableNameOld===t);a&&a[0]?(console.log("Renaming Table"),await d({queryString:`RENAME TABLE \`${r}\`.\`${a[0].tableNameOld}\` TO \`${a[0].tableName}\``})):(console.log(`Dropping Table from ${r}`),await d({queryString:`DROP TABLE \`${r}\`.\`${t}\``}),await (0,n.A)({query:"DELETE FROM datasquirel.user_database_tables WHERE user_id = ? AND db_slug = ? AND table_slug = ?",values:[e,E,t]}))}}for(let a=0;a<s.length;a++){let t=s[a],{tableName:i,fields:n,indexes:E}=t,c=await d({queryString:`
|
|
SELECT EXISTS (
|
|
SELECT
|
|
TABLE_NAME
|
|
FROM
|
|
information_schema.TABLES
|
|
WHERE
|
|
TABLE_SCHEMA = ? AND
|
|
TABLE_NAME = ?
|
|
) AS tableExists`,queryValuesArray:[r,t.tableName]});if(c&&c[0]?.tableExists>0){if(await _({dbFullName:r,tableName:i,tableNameFull:t.tableFullName,tableInfoArray:n,userId:e,dbSchema:u,tableIndexes:E,tableIndex:a,childDb:l.childDatabase||void 0,recordedDbEntry:S,tableSchema:t}),t.childrenTables&&t.childrenTables[0])for(let a=0;a<t.childrenTables.length;a++){let r=t.childrenTables[a];await _({dbFullName:r.dbNameFull,tableName:r.tableName,tableNameFull:r.tableNameFull,tableInfoArray:n,userId:e,dbSchema:u,tableIndexes:E,clone:!0,childDb:l.childDatabase||void 0,recordedDbEntry:S,tableSchema:t})}}else await o({tableName:i,tableInfoArray:n,dbFullName:r,tableSchema:t,recordedDbEntry:S}),E?.[0]&&T({dbFullName:r,indexes:E,tableName:i});await f({dbFullName:r,dbSchema:u,tableSchema:t,dbRecord:S,userId:e})}if(c?.[0])for(let a=0;a<c.length;a++){let{dbFullName:t}=c[a];await m({userId:e,targetDatabase:t})}}}},41864:(e,a,t)=>{t.d(a,{A:()=>s});var l=t(29021),r=t.n(l),i=t(33873),n=t.n(i),d=t(7447);async function s({query:e,values:a}){let t;let l=(0,d.A)();try{t=e&&a?await l.query(e,a):await l.query(e)}catch(a){if(process.env.FIRST_RUN)return null;console.log("ERROR in dbHandler =>",a.message),console.log(a),console.log(l.config());let e=n().resolve(process.cwd(),"./.tmp");r().existsSync(e)||r().mkdirSync(e,{recursive:!0}),r().appendFileSync(n().resolve(e,"./dbErrorLogs.txt"),JSON.stringify(a,null,4)+"\n"+Date()+"\n\n\n","utf8"),t=null}finally{await l?.end()}return t?JSON.parse(JSON.stringify(t)):null}},66866:(e,a,t)=>{t.d(a,{A:()=>r});var l=t(41864);async function r(e){let a;try{a=await (0,l.A)({query:e})}catch(e){console.log("ERROR in noDatabaseDbHandler =>",e.message)}return a||null}},6346:(e,a,t)=>{t.d(a,{A:()=>i});var l=t(33873),r=t.n(l);function i(e){let a=process.env.DSQL_APP_DIR,t=process.env.DSQL_DB_SCHEMA_DIR,l=".tmp";if(!a)throw Error("Please provide the `DSQL_APP_DIR` env variable.");if(!t)throw Error("Please provide the `DSQL_DB_SCHEMA_DIR` env variable.");let i=r().join(a,"package-shared"),n=r().join(i,"types/dsql.ts"),d=r().join(t,"main.json"),s=r().join(i,"data/defaultFields.json"),o=r().join(t,"users"),u=e?.user?.id?r().join(o,`user-${e.user.id}`):e?.userId?r().join(o,`user-${e.userId}`):void 0,_=u?r().join(u,"main.json"):void 0,E=u?r().join(u,"media"):void 0,c=u?r().join(u,"export"):void 0,N=c?r().join(c,"sql"):void 0,b=N?r().join(N,l):void 0,A=b?r().join(b,"schema.json"):void 0,S="db-export.zip",f=N?r().join(N,S):void 0,T="db-export.zip",m=N?r().join(N,T):void 0;return{schemasDir:t,userDirPath:u,mainShemaJSONFilePath:d,mainDbTypeDefFile:n,tempDirName:l,defaultTableFieldsJSONFilePath:s,usersSchemaDir:o,userSchemaMainJSONFilePath:_,userPrivateMediaDir:E,userPrivateExportsDir:c,userPrivateSQLExportsDir:N,userPrivateTempSQLExportsDir:b,userPrivateTempJSONSchemaFilePath:A,userPrivateDbExportZipFileName:S,userPrivateDbExportZipFilePath:f,userPrivateDbImportZipFileName:T,userPrivateDbImportZipFilePath:m}}},59338:(e,a,t)=>{t.d(a,{A:()=>l});let l={parse:function(e,a){if(e){if("object"==typeof e)return e;if("string"==typeof e)try{return JSON.parse(e,a)}catch(e){return}}},stringify:function(e,a,t){try{return JSON.stringify(e,a||void 0,t)}catch(e){return}}}},7447:(e,a,t)=>{t.d(a,{A:()=>i});var l=t(9973),r=t.n(l);function i(e){return global.DSQL_USE_LOCAL||e?.local?global.DSQL_DB_CONN||r()({config:{host:process.env.DSQL_DB_HOST,user:process.env.DSQL_DB_USERNAME,password:process.env.DSQL_DB_PASSWORD,database:e?.noDb?void 0:process.env.DSQL_DB_NAME,port:process.env.DSQL_DB_PORT?Number(process.env.DSQL_DB_PORT):void 0,charset:"utf8mb4"}}):e?.ro?global.DSQL_READ_ONLY_DB_CONN||r()({config:{host:process.env.DSQL_DB_HOST,user:process.env.DSQL_DB_READ_ONLY_USERNAME,password:process.env.DSQL_DB_READ_ONLY_PASSWORD,port:process.env.DSQL_DB_PORT?Number(process.env.DSQL_DB_PORT):void 0,charset:"utf8mb4"}}):e?.fa?global.DSQL_FULL_ACCESS_DB_CONN||r()({config:{host:process.env.DSQL_DB_HOST,user:process.env.DSQL_DB_FULL_ACCESS_USERNAME,password:process.env.DSQL_DB_FULL_ACCESS_PASSWORD,port:process.env.DSQL_DB_PORT?Number(process.env.DSQL_DB_PORT):void 0,charset:"utf8mb4"}}):global.DSQL_DB_CONN||r()({config:{host:process.env.DSQL_DB_HOST,user:process.env.DSQL_DB_USERNAME,password:process.env.DSQL_DB_PASSWORD,database:e?.noDb?void 0:process.env.DSQL_DB_NAME,port:process.env.DSQL_DB_PORT?Number(process.env.DSQL_DB_PORT):void 0,charset:"utf8mb4"}})}},95610:e=>{e.exports=JSON.parse('[{"fieldName":"id","dataType":"BIGINT","notNullValue":true,"primaryKey":true,"autoIncrement":true},{"fieldName":"uuid","dataType":"UUID","defaultValueLiteral":"UUID()"},{"fieldName":"date_created","dataType":"VARCHAR(250)","nullValue":true},{"fieldName":"date_created_code","dataType":"BIGINT","nullValue":true},{"fieldName":"date_created_timestamp","dataType":"TIMESTAMP","defaultValueLiteral":"CURRENT_TIMESTAMP"},{"fieldName":"date_updated","dataType":"VARCHAR(250)","nullValue":true},{"fieldName":"date_updated_code","dataType":"BIGINT","nullValue":true},{"fieldName":"date_updated_timestamp","dataType":"TIMESTAMP","defaultValueLiteral":"CURRENT_TIMESTAMP","onUpdateLiteral":"CURRENT_TIMESTAMP"}]')}}; |