@lovrabet/rabetbase-cli 2.1.14-beta.3 → 2.2.0-beta.2
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/lib/api/api-doc.js +1 -1
- package/lib/api/fetch-model-list.js +1 -1
- package/lib/api/generate-api-file.js +1 -1
- package/lib/auth/auth-server-ui.js +1 -1
- package/lib/auth/auth-server.js +1 -1
- package/lib/auth/constant.js +1 -1
- package/lib/auth/get-cookie.js +1 -1
- package/lib/auth/get-session-user.js +1 -1
- package/lib/auth/is-session-valid.js +1 -1
- package/lib/auth/login-success-html.js +1 -1
- package/lib/auth/logout.js +1 -1
- package/lib/cli-flags.js +1 -1
- package/lib/cli.js +1 -1
- package/lib/commands/api/generate.js +1 -1
- package/lib/commands/api/index.js +1 -1
- package/lib/commands/api/list.js +1 -1
- package/lib/commands/api/pull.js +1 -1
- package/lib/commands/api/shared.js +1 -1
- package/lib/commands/app/add.js +1 -1
- package/lib/commands/app/discover.js +1 -1
- package/lib/commands/app/index.js +1 -1
- package/lib/commands/app/list.js +1 -1
- package/lib/commands/app/remove.js +1 -1
- package/lib/commands/app/shared.js +1 -1
- package/lib/commands/app/use.js +1 -1
- package/lib/commands/auth/index.js +1 -1
- package/lib/commands/bff/create.js +1 -1
- package/lib/commands/bff/delete.js +1 -1
- package/lib/commands/bff/detail.js +1 -1
- package/lib/commands/bff/index.js +1 -1
- package/lib/commands/bff/list.js +1 -1
- package/lib/commands/bff/pull.js +1 -1
- package/lib/commands/bff/push.js +1 -1
- package/lib/commands/bff/status.js +1 -1
- package/lib/commands/cli-update.js +1 -1
- package/lib/commands/codegen/index.js +1 -1
- package/lib/commands/codegen/sdk.js +1 -1
- package/lib/commands/codegen/sql.js +1 -1
- package/lib/commands/common/app-selector.js +1 -1
- package/lib/commands/common/flags.js +1 -1
- package/lib/commands/common/validate.js +1 -1
- package/lib/commands/config/get.js +1 -1
- package/lib/commands/config/index.js +1 -1
- package/lib/commands/config/list.js +1 -1
- package/lib/commands/config/set.js +1 -1
- package/lib/commands/config/shared.js +1 -1
- package/lib/commands/data/filter.js +1 -1
- package/lib/commands/data/getOne.js +1 -1
- package/lib/commands/data/index.js +1 -1
- package/lib/commands/data/shared.js +1 -1
- package/lib/commands/dataset/capability.js +1 -1
- package/lib/commands/dataset/delete.js +1 -1
- package/lib/commands/dataset/detail.js +1 -1
- package/lib/commands/dataset/extend-update.js +1 -1
- package/lib/commands/dataset/field-update.js +1 -1
- package/lib/commands/dataset/index.js +1 -1
- package/lib/commands/dataset/list.js +1 -1
- package/lib/commands/dataset/operations.js +1 -1
- package/lib/commands/dataset/relation-create.js +1 -0
- package/lib/commands/dataset/relation-delete.js +1 -0
- package/lib/commands/dataset/relation-shared.js +1 -0
- package/lib/commands/dataset/relation-update.js +1 -0
- package/lib/commands/dataset/relations.js +1 -0
- package/lib/commands/dataset/rename.js +1 -1
- package/lib/commands/db/analyze-cancel.js +1 -1
- package/lib/commands/db/analyze-start.js +1 -1
- package/lib/commands/db/analyze-status.js +1 -1
- package/lib/commands/db/create.js +1 -1
- package/lib/commands/db/delete.js +1 -1
- package/lib/commands/db/detail.js +1 -1
- package/lib/commands/db/diff.js +1 -1
- package/lib/commands/db/index.js +1 -1
- package/lib/commands/db/list.js +1 -1
- package/lib/commands/db/shared.js +1 -1
- package/lib/commands/db/tables.js +1 -1
- package/lib/commands/db/test.js +1 -1
- package/lib/commands/db/update.js +1 -1
- package/lib/commands/doctor.js +1 -1
- package/lib/commands/init/index.js +1 -1
- package/lib/commands/issue/index.js +1 -1
- package/lib/commands/issue/nudge.js +1 -1
- package/lib/commands/issue/report.js +1 -1
- package/lib/commands/issue/shared.js +1 -1
- package/lib/commands/logs/index.js +1 -1
- package/lib/commands/menu/index.js +1 -1
- package/lib/commands/menu/shared/compare-table.js +1 -1
- package/lib/commands/menu/shared/index.js +1 -1
- package/lib/commands/menu/shared/inquirer.js +1 -1
- package/lib/commands/menu/shared/local-pages.js +1 -1
- package/lib/commands/menu/shared/logic.js +1 -1
- package/lib/commands/menu/shared/service.js +1 -1
- package/lib/commands/menu/shared/sync-core.js +1 -1
- package/lib/commands/menu/shared/update-core.js +1 -1
- package/lib/commands/menu/shared/valid-url.js +1 -1
- package/lib/commands/menu/sync.js +1 -1
- package/lib/commands/menu/update.js +1 -1
- package/lib/commands/page/generate-start.js +1 -1
- package/lib/commands/page/generate-status.js +1 -1
- package/lib/commands/page/index.js +1 -1
- package/lib/commands/page/pull.js +1 -1
- package/lib/commands/page/push.js +1 -1
- package/lib/commands/page/relation-audit.js +1 -0
- package/lib/commands/page/shared.js +1 -1
- package/lib/commands/page/standard-page-status.js +1 -1
- package/lib/commands/page/sync.js +1 -1
- package/lib/commands/project/create/enhanced-guided-create.js +1 -1
- package/lib/commands/project/create/format-elapsed.js +1 -1
- package/lib/commands/project/create/main.js +1 -1
- package/lib/commands/project/create/non-interactive.js +1 -1
- package/lib/commands/project/create/project-template-path.js +1 -1
- package/lib/commands/project/create/use-copy-project-template.js +1 -1
- package/lib/commands/project/create/use-format-code.js +1 -1
- package/lib/commands/project/create/use-install-dependencies.js +1 -1
- package/lib/commands/project/index.js +1 -1
- package/lib/commands/project/init.js +1 -1
- package/lib/commands/project/upgrade.js +1 -1
- package/lib/commands/registry.js +1 -1
- package/lib/commands/run/index.js +1 -1
- package/lib/commands/schema.js +1 -1
- package/lib/commands/skill/index.js +1 -1
- package/lib/commands/sql/create.js +1 -1
- package/lib/commands/sql/delete.js +1 -1
- package/lib/commands/sql/detail.js +1 -1
- package/lib/commands/sql/exec.js +1 -1
- package/lib/commands/sql/index.js +1 -1
- package/lib/commands/sql/list.js +1 -1
- package/lib/commands/sql/pull.js +1 -1
- package/lib/commands/sql/push.js +1 -1
- package/lib/commands/sql/save.js +1 -1
- package/lib/commands/sql/shared.js +1 -1
- package/lib/commands/sql/status.js +1 -1
- package/lib/commands/sql/validate.js +1 -1
- package/lib/config/schema.js +1 -1
- package/lib/constant/cdn.js +1 -1
- package/lib/constant/cli.js +1 -1
- package/lib/constant/defaults.js +1 -1
- package/lib/constant/domain.js +1 -1
- package/lib/constant/env.js +1 -1
- package/lib/constant/output.js +1 -1
- package/lib/constant/paths.js +1 -1
- package/lib/constant/risk.js +1 -1
- package/lib/context.js +1 -1
- package/lib/core/alias-resolver.js +1 -1
- package/lib/core/api-client.js +1 -1
- package/lib/core/bff/config.js +1 -1
- package/lib/core/bff/file-system.js +1 -1
- package/lib/core/bff/hash.js +1 -1
- package/lib/core/bff/lock.js +1 -1
- package/lib/core/bff/utils.js +1 -1
- package/lib/core/db-resolver.js +1 -1
- package/lib/core/page/file-system.js +1 -1
- package/lib/core/page/hash.js +1 -1
- package/lib/core/page/lock.js +1 -1
- package/lib/core/sql-sync/config.js +1 -1
- package/lib/core/sql-sync/file-system.js +1 -1
- package/lib/core/sql-sync/hash.js +1 -1
- package/lib/core/sql-sync/lock.js +1 -1
- package/lib/core/sql-sync/utils.js +1 -1
- package/lib/core/sql-validator.js +1 -1
- package/lib/errors.js +1 -1
- package/lib/framework/build-all-flags.js +1 -1
- package/lib/framework/flags.js +1 -1
- package/lib/framework/help.js +1 -1
- package/lib/framework/index.js +1 -1
- package/lib/framework/output.js +1 -1
- package/lib/framework/response.js +1 -1
- package/lib/framework/runner-alias.js +1 -1
- package/lib/framework/runner.js +1 -1
- package/lib/framework/schema-export.js +1 -1
- package/lib/framework/types.js +1 -1
- package/lib/generated/build-info.js +1 -1
- package/lib/help.js +1 -1
- package/lib/skills/main.js +1 -1
- package/lib/skills/npx-skills-add.js +1 -1
- package/lib/telemetry/cli-command-trace.js +1 -1
- package/lib/telemetry/cli-help-trace.js +1 -1
- package/lib/telemetry/ensure-cli-otel-config.js +1 -1
- package/lib/telemetry/register-otel-exit-shutdown.js +1 -1
- package/lib/telemetry/send-cli-trace-log.js +1 -1
- package/lib/telemetry/send-platform-issue-collect-log.js +1 -1
- package/lib/utils/ai_config.js +1 -1
- package/lib/utils/apply-jq-filter.js +1 -1
- package/lib/utils/cdn-config.js +1 -1
- package/lib/utils/check-sdk-version.js +1 -1
- package/lib/utils/cli-version-check.js +1 -1
- package/lib/utils/cli-version-policy.js +1 -1
- package/lib/utils/config.js +1 -1
- package/lib/utils/copy-directory.js +1 -1
- package/lib/utils/entity-with-id.js +1 -1
- package/lib/utils/file-utils.js +1 -1
- package/lib/utils/guides-cdn.js +1 -1
- package/lib/utils/http-client.js +1 -1
- package/lib/utils/is-non-interactive.js +1 -1
- package/lib/utils/logger.js +1 -1
- package/lib/utils/params.js +1 -1
- package/lib/utils/platform.js +1 -1
- package/lib/utils/rules-cdn.js +1 -1
- package/lib/utils/sleep.js +1 -1
- package/lib/utils/template-replacer.js +1 -1
- package/lib/utils/update-notice.js +1 -0
- package/lib/utils/version.js +1 -1
- package/lib/utils/with-active-cookie.js +1 -1
- package/lib/utils/write-cli-side-channel.js +1 -1
- package/package.json +1 -1
- package/lib/commands/dataset/link-create.js +0 -1
- package/lib/commands/dataset/link-delete.js +0 -1
- package/lib/commands/dataset/link-shared.js +0 -1
- package/lib/commands/dataset/link-update.js +0 -1
- package/lib/commands/dataset/links.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
function
|
|
1
|
+
const a120_0xd6f93b=a120_0x3726;function a120_0x2e45(){const _0x3aea76=['skipped','info','5125864NNqrCy','inherit','37272774lYpXcH','执行安装技能包命令(委托给\x20npx\x20skills\x20add\x20-g\x20-y)','install','skill','unknown','apiError','12DxmcAU','9cXUIVJ','skill-install','5wFUjvJ',')...','Check\x20network\x20connectivity\x20and\x20try\x20again.','log','nonInteractive','setLogPath','error','cwd','1570113XgVGMb','266286RCYHDT','2TObjUE','9608390ptKVhm','2006515hRdnMf','Install\x20developer\x20skill\x20package','lovrabet/rabetbase','5492028IrYuTa'];a120_0x2e45=function(){return _0x3aea76;};return a120_0x2e45();}(function(_0x42821a,_0x48ac61){const _0x177288=a120_0x3726,_0x1c3477=_0x42821a();while(!![]){try{const _0x24764b=parseInt(_0x177288(0xa9))/0x1*(-parseInt(_0x177288(0xab))/0x2)+parseInt(_0x177288(0xaa))/0x3+-parseInt(_0x177288(0xb0))/0x4*(parseInt(_0x177288(0xbe))/0x5)+-parseInt(_0x177288(0xbb))/0x6*(-parseInt(_0x177288(0xad))/0x7)+-parseInt(_0x177288(0xb3))/0x8*(-parseInt(_0x177288(0xbc))/0x9)+-parseInt(_0x177288(0xac))/0xa+parseInt(_0x177288(0xb5))/0xb;if(_0x24764b===_0x48ac61)break;else _0x1c3477['push'](_0x1c3477['shift']());}catch(_0x368616){_0x1c3477['push'](_0x1c3477['shift']());}}}(a120_0x2e45,0xc033c));import{CliErrors}from'../../errors.js';import{CLI_BIN_NAME}from'../../constant/cli.js';import{logger}from'../../utils/logger.js';function a120_0x3726(_0x5be956,_0x208aad){_0x5be956=_0x5be956-0xa3;const _0x2e4541=a120_0x2e45();let _0x372631=_0x2e4541[_0x5be956];return _0x372631;}import{NPX_SKILLS_ADD_GLOBAL_COMMAND_LINE}from'../../skills/npx-skills-add.js';export const skillDefinitions=[{'service':a120_0xd6f93b(0xb8),'command':a120_0xd6f93b(0xb7),'description':a120_0xd6f93b(0xae),'risk':'write','requiresAuth':![],'requiresAppCode':![],'hasFormat':![],'flags':[],async 'execute'(_0xbbbc5e){const _0x43c257=a120_0xd6f93b;logger[_0x43c257(0xa6)](process[_0x43c257(0xa8)]()),logger[_0x43c257(0xb2)](_0x43c257(0xbd),_0x43c257(0xb6));const {runNpxSkillsAddGlobal:_0x3654e1}=await import('../../skills/npx-skills-add.js'),_0x67f842=_0xbbbc5e[_0x43c257(0xa5)]?'pipe':_0x43c257(0xb4);console['log']('Installing\x20official\x20skill\x20via\x20npx\x20('+NPX_SKILLS_ADD_GLOBAL_COMMAND_LINE+_0x43c257(0xbf));const _0x2bdbb8=_0x3654e1(process['cwd'](),_0x43c257(0xaf),{'stdio':_0x67f842});if(_0x2bdbb8[_0x43c257(0xb1)])console[_0x43c257(0xa4)]('Skipped\x20npx\x20(RABETBASE_SKIP_NPX_SKILLS=1);\x20assuming\x20skill\x20is\x20already\x20present.');else{if(_0x2bdbb8['ok'])console[_0x43c257(0xa4)](CLI_BIN_NAME+'\x20skill\x20installed');else throw CliErrors[_0x43c257(0xba)]('npx\x20skills\x20add\x20failed:\x20'+(_0x2bdbb8[_0x43c257(0xa7)]||_0x43c257(0xb9)),_0x43c257(0xa3));}return{'ok':!![]};}}];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const a120_0x5cd701=a120_0x3595;function a120_0x3928(){const _0x320825=['number','__manual__','1087787tOtiEf','utf8','lastSync','POST','flagMissing','普通\x20SQL(sql)','create','isInteger','parse','sql','dbId\x20必须为正整数','toISOString','</select>','validation','请选择目标数据库:','stringify','join','请选择本地\x20SQL\x20模式:','new','trim','db-id','sqlCode','--db-id\x20is\x20required\x20in\x20non-interactive\x20mode.','2124JNdsri','Local\x20SQL\x20file\x20mode','lockFilePath','high-risk-write','SQL\x20query\x20display\x20name','1994lzIwIN','3750964eXKhPW','description','90lJXbLH','nonInteractive','isFinite','--name\x20is\x20required\x20in\x20non-interactive\x20mode.','mode','183295zNgYfr','✎\x20手动输入\x20dbId','mybatisXml','MyBatis\x20XML(mybatisXml)','sqlName','请输入目标数据库\x20dbId:','string','name','/smartapi/custom/saveUserCustomSql','File\x20already\x20exists:\x20','--mode\x20is\x20required\x20in\x20non-interactive\x20mode.','str','sqls','适合带动态标签的\x20MyBatis\x20XML\x20SQL','5473712YYYvau','9ZgKRrB','Created\x20SQL\x20query\x20','Create\x20a\x20new\x20custom\x20SQL\x20and\x20scaffold\x20it\x20locally','catch','<server-generated-sqlCode>','Would\x20create\x20a\x20new\x20SQL\x20query\x20and\x20scaffold\x20it\x20under\x20','dbId','sqlRootDir','25947340aFAuZU','dbId\x20不能为空','length','611989NFikgz','appCode'];a120_0x3928=function(){return _0x320825;};return a120_0x3928();}(function(_0x8f8bb3,_0x5bb013){const _0x12c513=a120_0x3595,_0x562529=_0x8f8bb3();while(!![]){try{const _0x470d26=parseInt(_0x12c513(0xe3))/0x1+-parseInt(_0x12c513(0xbd))/0x2*(parseInt(_0x12c513(0xb8))/0x3)+-parseInt(_0x12c513(0xbe))/0x4+parseInt(_0x12c513(0xc5))/0x5*(-parseInt(_0x12c513(0xc0))/0x6)+-parseInt(_0x12c513(0xdf))/0x7+-parseInt(_0x12c513(0xd3))/0x8+parseInt(_0x12c513(0xd4))/0x9*(parseInt(_0x12c513(0xdc))/0xa);if(_0x470d26===_0x5bb013)break;else _0x562529['push'](_0x562529['shift']());}catch(_0x25590c){_0x562529['push'](_0x562529['shift']());}}}(a120_0x3928,0xaf242));import{writeFile}from'node:fs/promises';import{input,select}from'@inquirer/prompts';import{createSqlQuery}from'../../core/api-client.js';import{getDbName,listDatabases}from'../../core/db-resolver.js';import{loadSqlProjectConfig}from'../../core/sql-sync/config.js';import{ensureParentDirectory,fileExists}from'../../core/bff/file-system.js';import{computeSqlContentHash}from'../../core/sql-sync/hash.js';import{createEmptySqlLock,ensureSqlLockScope,readSqlLockFile,writeSqlLockFile}from'../../core/sql-sync/lock.js';import{buildSqlRelativePath}from'../../core/sql-sync/utils.js';import{CliErrors}from'../../errors.js';import{buildLocalSqlFileContent,buildSqlLockEntry,ensureRemoteSqlContent}from'./shared.js';function generateSqlTemplate(_0x4009d1){const _0x163a2e=a120_0x3595;if(_0x4009d1===_0x163a2e(0xc7))return['<select\x20id=\x22query\x22\x20resultType=\x22map\x22>','\x20\x20SELECT\x201\x20AS\x20id',_0x163a2e(0xad),''][_0x163a2e(0xb1)]('\x0a');return['SELECT\x201\x20AS\x20id;',''][_0x163a2e(0xb1)]('\x0a');}function a120_0x3595(_0x56aa73,_0x379c05){_0x56aa73=_0x56aa73-0xac;const _0x39285f=a120_0x3928();let _0x35951d=_0x39285f[_0x56aa73];return _0x35951d;}export const sqlCreate={'service':'sql','command':a120_0x5cd701(0xe9),'description':a120_0x5cd701(0xd6),'risk':a120_0x5cd701(0xbb),'flags':[{'name':a120_0x5cd701(0xcc),'type':'string','description':a120_0x5cd701(0xbc)},{'name':'db-id','type':a120_0x5cd701(0xe1),'description':'Target\x20database\x20ID'},{'name':a120_0x5cd701(0xc4),'type':a120_0x5cd701(0xcb),'enum':[a120_0x5cd701(0xec),'mybatisXml'],'description':a120_0x5cd701(0xb9)}],async 'validate'(_0x350346){const _0x367b11=a120_0x5cd701;if(!_0x350346['nonInteractive'])return;if(!_0x350346['str'](_0x367b11(0xcc))[_0x367b11(0xb4)]())throw CliErrors[_0x367b11(0xe7)]('name',_0x367b11(0xc3));const _0x4c0b1d=resolveProvidedDbId(_0x350346);if(typeof _0x4c0b1d!==_0x367b11(0xe1)||!Number[_0x367b11(0xc2)](_0x4c0b1d)||_0x4c0b1d<=0x0)throw CliErrors[_0x367b11(0xe7)](_0x367b11(0xb5),_0x367b11(0xb7));if(!_0x350346['str'](_0x367b11(0xc4))[_0x367b11(0xb4)]())throw CliErrors[_0x367b11(0xe7)](_0x367b11(0xc4),_0x367b11(0xcf));},async 'dryRun'(_0x2c920d){const _0x380f47=a120_0x5cd701,_0x1d397f=loadSqlProjectConfig(_0x2c920d[_0x380f47(0xe0)]),{sqlName:_0x37c9ff,dbId:_0x13a95c,dbName:_0x4c4562,mode:_0x5c82b9}=await resolveSqlNewInputs(_0x2c920d),_0x584e27=buildSqlRelativePath(_0x380f47(0xd8),_0x37c9ff,_0x4c4562,_0x5c82b9,_0x13a95c),_0x2fe3d2=_0x1d397f[_0x380f47(0xdb)]+'/'+_0x584e27;return{'method':_0x380f47(0xe6),'url':_0x380f47(0xcd),'body':{'appCode':_0x2c920d[_0x380f47(0xe0)],'sqlName':_0x37c9ff,'dbId':_0x13a95c,'mode':_0x5c82b9,'localPath':_0x2fe3d2},'description':_0x380f47(0xd9)+_0x1d397f['sqlRootDir']};},async 'execute'(_0x129d2a){const _0x1bc403=a120_0x5cd701,_0x54d3b5=loadSqlProjectConfig(_0x129d2a['appCode']),{sqlName:_0x4af882,dbId:_0xbc454c,dbName:_0x2d6e52,mode:_0x1ff384}=await resolveSqlNewInputs(_0x129d2a),_0x105414=generateSqlTemplate(_0x1ff384),_0x540614=await createSqlQuery({'appCode':_0x129d2a[_0x1bc403(0xe0)],'sqlName':_0x4af882,'dbId':_0xbc454c,'sqlContent':_0x105414}),_0x253753=ensureRemoteSqlContent(_0x540614),_0x1de8ec=_0x2d6e52||await getDbName(_0x129d2a[_0x1bc403(0xe0)],_0xbc454c)[_0x1bc403(0xd7)](()=>undefined),_0x4e0f92=buildSqlRelativePath(_0x540614[_0x1bc403(0xb6)],_0x540614[_0x1bc403(0xc9)],_0x1de8ec,_0x1ff384,_0xbc454c),_0x2b0695=_0x54d3b5[_0x1bc403(0xdb)]+'/'+_0x4e0f92,_0x1d6dc2=buildLocalSqlFileContent({'sqlCode':_0x540614[_0x1bc403(0xb6)],'sqlName':_0x540614[_0x1bc403(0xc9)],'dbId':_0x540614[_0x1bc403(0xda)]},_0x253753,{'dbName':_0x1de8ec,'mode':_0x1ff384,'syncedAt':new Date()[_0x1bc403(0xac)](),'description':_0x540614[_0x1bc403(0xbf)]});if(await fileExists(_0x2b0695))throw CliErrors[_0x1bc403(0xae)](_0x1bc403(0xce)+_0x2b0695);await ensureParentDirectory(_0x2b0695),await writeFile(_0x2b0695,_0x1d6dc2,_0x1bc403(0xe4));const _0x37254a=await readSqlLockFile(_0x54d3b5[_0x1bc403(0xba)]),{lockData:_0x26663e,appLock:_0x351a2b}=ensureSqlLockScope(_0x37254a??createEmptySqlLock(),_0x54d3b5[_0x1bc403(0xe0)],_0x54d3b5['sqlRoot'],_0x1bc403(0xb3));return _0x351a2b[_0x1bc403(0xd1)][_0x540614[_0x1bc403(0xb6)]]={...buildSqlLockEntry(_0x540614,_0x253753,computeSqlContentHash(_0x1d6dc2),{'dbName':_0x1de8ec}),'path':_0x4e0f92,'mode':_0x1ff384},_0x351a2b[_0x1bc403(0xe5)]=new Date()['toISOString'](),await writeSqlLockFile(_0x54d3b5['lockFilePath'],_0x26663e),{'ok':!![],'data':{'id':_0x540614['id'],'sqlCode':_0x540614[_0x1bc403(0xb6)],'sqlName':_0x540614['sqlName'],'dbId':_0x540614['dbId'],'path':_0x2b0695,'mode':_0x1ff384},'message':_0x1bc403(0xd5)+_0x540614[_0x1bc403(0xb6)]};}};async function resolveSqlNewInputs(_0x3ee731){const _0x39a962=await resolveSqlNameInput(_0x3ee731),{dbId:_0x339524,dbName:_0x445151}=await resolveDbSelection(_0x3ee731),_0x5554df=await resolveSqlModeInput(_0x3ee731);return{'sqlName':_0x39a962,'dbId':_0x339524,'dbName':_0x445151,'mode':_0x5554df};}async function resolveSqlNameInput(_0x4204a3){const _0x469967=a120_0x5cd701,_0x5e1f99=_0x4204a3[_0x469967(0xd0)]('name')['trim']();if(_0x5e1f99)return _0x5e1f99;if(_0x4204a3['nonInteractive'])throw CliErrors[_0x469967(0xe7)](_0x469967(0xcc),_0x469967(0xc3));return(await input({'message':'请输入\x20SQL\x20名称:','validate':_0xa810c0=>_0xa810c0[_0x469967(0xb4)]()?!![]:'SQL\x20名称不能为空'}))[_0x469967(0xb4)]();}async function resolveDbSelection(_0x1e6ae2){const _0x4cfa65=a120_0x5cd701,_0xe2b268=resolveProvidedDbId(_0x1e6ae2);if(typeof _0xe2b268===_0x4cfa65(0xe1)&&Number['isFinite'](_0xe2b268)&&_0xe2b268>0x0)return{'dbId':_0xe2b268,'dbName':await getDbName(_0x1e6ae2[_0x4cfa65(0xe0)],_0xe2b268)[_0x4cfa65(0xd7)](()=>undefined)};if(_0x1e6ae2[_0x4cfa65(0xc1)])throw CliErrors[_0x4cfa65(0xe7)](_0x4cfa65(0xb5),_0x4cfa65(0xb7));const _0x50a495=await listDatabases(_0x1e6ae2[_0x4cfa65(0xe0)])[_0x4cfa65(0xd7)](()=>[]);if(_0x50a495[_0x4cfa65(0xde)]===0x1)return{'dbId':_0x50a495[0x0][_0x4cfa65(0xda)],'dbName':_0x50a495[0x0]['dbName']};if(_0x50a495[_0x4cfa65(0xde)]>0x1){const _0x59e894=await select({'message':_0x4cfa65(0xaf),'choices':[..._0x50a495['map'](_0x50805d=>({'name':_0x50805d['dbName']+'\x20('+_0x50805d[_0x4cfa65(0xda)]+')','value':serializeDbSelection(_0x50805d)})),{'name':_0x4cfa65(0xc6),'value':_0x4cfa65(0xe2)}]});if(_0x59e894!==_0x4cfa65(0xe2))return deserializeDbSelection(_0x59e894);}const _0x3a5b1a=await input({'message':_0x4cfa65(0xca),'validate':_0x3e43c6=>{const _0x155e4d=_0x4cfa65,_0xa8e57d=_0x3e43c6['trim']();if(!_0xa8e57d)return _0x155e4d(0xdd);const _0x5b0460=Number(_0xa8e57d);if(!Number[_0x155e4d(0xea)](_0x5b0460)||_0x5b0460<=0x0)return _0x155e4d(0xed);return!![];}});return{'dbId':Number(_0x3a5b1a[_0x4cfa65(0xb4)]())};}async function resolveSqlModeInput(_0x354cb){const _0x485c1a=a120_0x5cd701,_0x1c43a0=_0x354cb[_0x485c1a(0xd0)](_0x485c1a(0xc4))['trim']();if(_0x1c43a0==='sql'||_0x1c43a0==='mybatisXml')return _0x1c43a0;if(_0x354cb['nonInteractive'])throw CliErrors['flagMissing'](_0x485c1a(0xc4),_0x485c1a(0xcf));return await select({'message':_0x485c1a(0xb2),'choices':[{'name':_0x485c1a(0xe8),'value':'sql','description':'适合直接执行的普通\x20SELECT\x20/\x20INSERT\x20/\x20UPDATE\x20/\x20DELETE\x20语句'},{'name':_0x485c1a(0xc8),'value':_0x485c1a(0xc7),'description':_0x485c1a(0xd2)}]});}function serializeDbSelection(_0x784c76){const _0x4e0c68=a120_0x5cd701;return JSON[_0x4e0c68(0xb0)]({'dbId':_0x784c76[_0x4e0c68(0xda)],'dbName':_0x784c76['dbName']});}function deserializeDbSelection(_0x1afb10){const _0x45305b=a120_0x5cd701;try{const _0x1f9e91=JSON[_0x45305b(0xeb)](_0x1afb10);if(typeof _0x1f9e91[_0x45305b(0xda)]===_0x45305b(0xe1)&&Number['isFinite'](_0x1f9e91[_0x45305b(0xda)]))return{'dbId':_0x1f9e91['dbId'],'dbName':_0x1f9e91['dbName']};}catch{}throw CliErrors[_0x45305b(0xae)]('Invalid\x20database\x20selection\x20payload:\x20'+_0x1afb10);}function resolveProvidedDbId(_0x4c964a){const _0x20afbd=a120_0x5cd701,_0x361c7e=_0x4c964a['flag'](_0x20afbd(0xb5));if(typeof _0x361c7e===_0x20afbd(0xe1)&&Number['isFinite'](_0x361c7e))return _0x361c7e;return undefined;}
|
|
1
|
+
const a121_0x237675=a121_0x4c1c;(function(_0x1b9139,_0x1a4511){const _0x1c3edb=a121_0x4c1c,_0x2e39f4=_0x1b9139();while(!![]){try{const _0x2a83f3=parseInt(_0x1c3edb(0xd5))/0x1*(-parseInt(_0x1c3edb(0xda))/0x2)+parseInt(_0x1c3edb(0xa5))/0x3*(-parseInt(_0x1c3edb(0xbb))/0x4)+-parseInt(_0x1c3edb(0xba))/0x5*(parseInt(_0x1c3edb(0xd9))/0x6)+-parseInt(_0x1c3edb(0xa6))/0x7+-parseInt(_0x1c3edb(0xb2))/0x8+parseInt(_0x1c3edb(0xa3))/0x9+parseInt(_0x1c3edb(0xd4))/0xa;if(_0x2a83f3===_0x1a4511)break;else _0x2e39f4['push'](_0x2e39f4['shift']());}catch(_0x1c2223){_0x2e39f4['push'](_0x2e39f4['shift']());}}}(a121_0x61a5,0x5df7b));function a121_0x4c1c(_0x159c96,_0x31965){_0x159c96=_0x159c96-0x96;const _0x61a592=a121_0x61a5();let _0x4c1c26=_0x61a592[_0x159c96];return _0x4c1c26;}import{writeFile}from'node:fs/promises';import{input,select}from'@inquirer/prompts';import{createSqlQuery}from'../../core/api-client.js';import{getDbName,listDatabases}from'../../core/db-resolver.js';import{loadSqlProjectConfig}from'../../core/sql-sync/config.js';function a121_0x61a5(){const _0x3cabf1=['length','trim','Created\x20SQL\x20query\x20','1898890eAplwT','128VWLibD','--name\x20is\x20required\x20in\x20non-interactive\x20mode.','parse','flag','/smartapi/custom/saveUserCustomSql','high-risk-write','适合带动态标签的\x20MyBatis\x20XML\x20SQL','请输入目标数据库\x20dbId:','File\x20already\x20exists:\x20','description','<server-generated-sqlCode>','--db-id\x20is\x20required\x20in\x20non-interactive\x20mode.','sqlName','--mode\x20is\x20required\x20in\x20non-interactive\x20mode.','Create\x20a\x20new\x20custom\x20SQL\x20and\x20scaffold\x20it\x20locally','MyBatis\x20XML(mybatisXml)','flagMissing','mode','stringify','请选择目标数据库:','dbId\x20必须为正整数','join','✎\x20手动输入\x20dbId','sql','dbId','23032110OjHzrT','8461qohegM','isFinite','普通\x20SQL(sql)','\x20\x20SELECT\x201\x20AS\x20id','12fEaVod','152Xhecps','lockFilePath','string','dbId\x20不能为空','__manual__','mybatisXml','validation','Would\x20create\x20a\x20new\x20SQL\x20query\x20and\x20scaffold\x20it\x20under\x20','lastSync','str','new','<select\x20id=\x22query\x22\x20resultType=\x22map\x22>','SQL\x20名称不能为空','sqlRoot','5372334yekGAS','nonInteractive','6978gjGmel','2178512zTdpTH','dbName','appCode','toISOString','sqlRootDir','sqlCode','number','请输入\x20SQL\x20名称:','db-id','catch','POST','Local\x20SQL\x20file\x20mode','5816048XMAdgE','Invalid\x20database\x20selection\x20payload:\x20','name','sqls','isInteger'];a121_0x61a5=function(){return _0x3cabf1;};return a121_0x61a5();}import{ensureParentDirectory,fileExists}from'../../core/bff/file-system.js';import{computeSqlContentHash}from'../../core/sql-sync/hash.js';import{createEmptySqlLock,ensureSqlLockScope,readSqlLockFile,writeSqlLockFile}from'../../core/sql-sync/lock.js';import{buildSqlRelativePath}from'../../core/sql-sync/utils.js';import{CliErrors}from'../../errors.js';import{buildLocalSqlFileContent,buildSqlLockEntry,ensureRemoteSqlContent}from'./shared.js';function generateSqlTemplate(_0x2e8e7c){const _0x58bbfb=a121_0x4c1c;if(_0x2e8e7c===_0x58bbfb(0x9a))return[_0x58bbfb(0xa0),_0x58bbfb(0xd8),'</select>',''][_0x58bbfb(0xd0)]('\x0a');return['SELECT\x201\x20AS\x20id;',''][_0x58bbfb(0xd0)]('\x0a');}export const sqlCreate={'service':a121_0x237675(0xd2),'command':'create','description':a121_0x237675(0xc9),'risk':a121_0x237675(0xc0),'flags':[{'name':a121_0x237675(0xb4),'type':a121_0x237675(0x97),'description':'SQL\x20query\x20display\x20name'},{'name':a121_0x237675(0xae),'type':a121_0x237675(0xac),'description':'Target\x20database\x20ID'},{'name':a121_0x237675(0xcc),'type':a121_0x237675(0x97),'enum':['sql','mybatisXml'],'description':a121_0x237675(0xb1)}],async 'validate'(_0x2dc2c2){const _0x3f27d1=a121_0x237675;if(!_0x2dc2c2[_0x3f27d1(0xa4)])return;if(!_0x2dc2c2['str']('name')['trim']())throw CliErrors[_0x3f27d1(0xcb)](_0x3f27d1(0xb4),_0x3f27d1(0xbc));const _0x4269e2=resolveProvidedDbId(_0x2dc2c2);if(typeof _0x4269e2!=='number'||!Number[_0x3f27d1(0xd6)](_0x4269e2)||_0x4269e2<=0x0)throw CliErrors[_0x3f27d1(0xcb)](_0x3f27d1(0xae),_0x3f27d1(0xc6));if(!_0x2dc2c2[_0x3f27d1(0x9e)](_0x3f27d1(0xcc))[_0x3f27d1(0xb8)]())throw CliErrors[_0x3f27d1(0xcb)]('mode',_0x3f27d1(0xc8));},async 'dryRun'(_0x409de8){const _0x544304=a121_0x237675,_0xcb309e=loadSqlProjectConfig(_0x409de8['appCode']),{sqlName:_0x173c1f,dbId:_0x401893,dbName:_0xc760d6,mode:_0x2d7316}=await resolveSqlNewInputs(_0x409de8),_0x2f87d8=buildSqlRelativePath(_0x544304(0xc5),_0x173c1f,_0xc760d6,_0x2d7316,_0x401893),_0x41c894=_0xcb309e[_0x544304(0xaa)]+'/'+_0x2f87d8;return{'method':_0x544304(0xb0),'url':_0x544304(0xbf),'body':{'appCode':_0x409de8[_0x544304(0xa8)],'sqlName':_0x173c1f,'dbId':_0x401893,'mode':_0x2d7316,'localPath':_0x41c894},'description':_0x544304(0x9c)+_0xcb309e[_0x544304(0xaa)]};},async 'execute'(_0x40bacc){const _0x5f4015=a121_0x237675,_0x23b48d=loadSqlProjectConfig(_0x40bacc[_0x5f4015(0xa8)]),{sqlName:_0x30f29c,dbId:_0x10317f,dbName:_0x5cb6ab,mode:_0x36d195}=await resolveSqlNewInputs(_0x40bacc),_0x4e1c45=generateSqlTemplate(_0x36d195),_0x3cc397=await createSqlQuery({'appCode':_0x40bacc[_0x5f4015(0xa8)],'sqlName':_0x30f29c,'dbId':_0x10317f,'sqlContent':_0x4e1c45}),_0x8b7911=ensureRemoteSqlContent(_0x3cc397),_0x778a61=_0x5cb6ab||await getDbName(_0x40bacc['appCode'],_0x10317f)[_0x5f4015(0xaf)](()=>undefined),_0x170996=buildSqlRelativePath(_0x3cc397[_0x5f4015(0xab)],_0x3cc397[_0x5f4015(0xc7)],_0x778a61,_0x36d195,_0x10317f),_0x2ad67b=_0x23b48d[_0x5f4015(0xaa)]+'/'+_0x170996,_0x8bc260=buildLocalSqlFileContent({'sqlCode':_0x3cc397[_0x5f4015(0xab)],'sqlName':_0x3cc397['sqlName'],'dbId':_0x3cc397['dbId']},_0x8b7911,{'dbName':_0x778a61,'mode':_0x36d195,'syncedAt':new Date()[_0x5f4015(0xa9)](),'description':_0x3cc397[_0x5f4015(0xc4)]});if(await fileExists(_0x2ad67b))throw CliErrors[_0x5f4015(0x9b)](_0x5f4015(0xc3)+_0x2ad67b);await ensureParentDirectory(_0x2ad67b),await writeFile(_0x2ad67b,_0x8bc260,'utf8');const _0x57155a=await readSqlLockFile(_0x23b48d['lockFilePath']),{lockData:_0x4c1d54,appLock:_0x5abd34}=ensureSqlLockScope(_0x57155a??createEmptySqlLock(),_0x23b48d['appCode'],_0x23b48d[_0x5f4015(0xa2)],_0x5f4015(0x9f));return _0x5abd34[_0x5f4015(0xb5)][_0x3cc397[_0x5f4015(0xab)]]={...buildSqlLockEntry(_0x3cc397,_0x8b7911,computeSqlContentHash(_0x8bc260),{'dbName':_0x778a61}),'path':_0x170996,'mode':_0x36d195},_0x5abd34[_0x5f4015(0x9d)]=new Date()[_0x5f4015(0xa9)](),await writeSqlLockFile(_0x23b48d[_0x5f4015(0x96)],_0x4c1d54),{'ok':!![],'data':{'id':_0x3cc397['id'],'sqlCode':_0x3cc397[_0x5f4015(0xab)],'sqlName':_0x3cc397[_0x5f4015(0xc7)],'dbId':_0x3cc397['dbId'],'path':_0x2ad67b,'mode':_0x36d195},'message':_0x5f4015(0xb9)+_0x3cc397[_0x5f4015(0xab)]};}};async function resolveSqlNewInputs(_0x451674){const _0x2685fa=await resolveSqlNameInput(_0x451674),{dbId:_0x41d97d,dbName:_0x31010e}=await resolveDbSelection(_0x451674),_0x5c9535=await resolveSqlModeInput(_0x451674);return{'sqlName':_0x2685fa,'dbId':_0x41d97d,'dbName':_0x31010e,'mode':_0x5c9535};}async function resolveSqlNameInput(_0x25b73c){const _0x2cbe72=a121_0x237675,_0xa807d1=_0x25b73c[_0x2cbe72(0x9e)](_0x2cbe72(0xb4))[_0x2cbe72(0xb8)]();if(_0xa807d1)return _0xa807d1;if(_0x25b73c[_0x2cbe72(0xa4)])throw CliErrors[_0x2cbe72(0xcb)](_0x2cbe72(0xb4),_0x2cbe72(0xbc));return(await input({'message':_0x2cbe72(0xad),'validate':_0x122301=>_0x122301[_0x2cbe72(0xb8)]()?!![]:_0x2cbe72(0xa1)}))['trim']();}async function resolveDbSelection(_0x27fdda){const _0x393796=a121_0x237675,_0x200abe=resolveProvidedDbId(_0x27fdda);if(typeof _0x200abe==='number'&&Number[_0x393796(0xd6)](_0x200abe)&&_0x200abe>0x0)return{'dbId':_0x200abe,'dbName':await getDbName(_0x27fdda['appCode'],_0x200abe)[_0x393796(0xaf)](()=>undefined)};if(_0x27fdda[_0x393796(0xa4)])throw CliErrors[_0x393796(0xcb)](_0x393796(0xae),_0x393796(0xc6));const _0x39c4d4=await listDatabases(_0x27fdda[_0x393796(0xa8)])[_0x393796(0xaf)](()=>[]);if(_0x39c4d4[_0x393796(0xb7)]===0x1)return{'dbId':_0x39c4d4[0x0][_0x393796(0xd3)],'dbName':_0x39c4d4[0x0][_0x393796(0xa7)]};if(_0x39c4d4[_0x393796(0xb7)]>0x1){const _0x532838=await select({'message':_0x393796(0xce),'choices':[..._0x39c4d4['map'](_0x4cbd5f=>({'name':_0x4cbd5f['dbName']+'\x20('+_0x4cbd5f[_0x393796(0xd3)]+')','value':serializeDbSelection(_0x4cbd5f)})),{'name':_0x393796(0xd1),'value':_0x393796(0x99)}]});if(_0x532838!==_0x393796(0x99))return deserializeDbSelection(_0x532838);}const _0x4eea95=await input({'message':_0x393796(0xc2),'validate':_0x23aa56=>{const _0x30f350=_0x393796,_0x31e6be=_0x23aa56[_0x30f350(0xb8)]();if(!_0x31e6be)return _0x30f350(0x98);const _0x1fa803=Number(_0x31e6be);if(!Number[_0x30f350(0xb6)](_0x1fa803)||_0x1fa803<=0x0)return _0x30f350(0xcf);return!![];}});return{'dbId':Number(_0x4eea95[_0x393796(0xb8)]())};}async function resolveSqlModeInput(_0x15bbf2){const _0x4e2b50=a121_0x237675,_0x201b95=_0x15bbf2[_0x4e2b50(0x9e)](_0x4e2b50(0xcc))[_0x4e2b50(0xb8)]();if(_0x201b95===_0x4e2b50(0xd2)||_0x201b95===_0x4e2b50(0x9a))return _0x201b95;if(_0x15bbf2[_0x4e2b50(0xa4)])throw CliErrors[_0x4e2b50(0xcb)](_0x4e2b50(0xcc),'--mode\x20is\x20required\x20in\x20non-interactive\x20mode.');return await select({'message':'请选择本地\x20SQL\x20模式:','choices':[{'name':_0x4e2b50(0xd7),'value':_0x4e2b50(0xd2),'description':'适合直接执行的普通\x20SELECT\x20/\x20INSERT\x20/\x20UPDATE\x20/\x20DELETE\x20语句'},{'name':_0x4e2b50(0xca),'value':_0x4e2b50(0x9a),'description':_0x4e2b50(0xc1)}]});}function serializeDbSelection(_0xa4adc7){const _0x4bde80=a121_0x237675;return JSON[_0x4bde80(0xcd)]({'dbId':_0xa4adc7[_0x4bde80(0xd3)],'dbName':_0xa4adc7[_0x4bde80(0xa7)]});}function deserializeDbSelection(_0x1a5191){const _0x3b9051=a121_0x237675;try{const _0x5e88df=JSON[_0x3b9051(0xbd)](_0x1a5191);if(typeof _0x5e88df[_0x3b9051(0xd3)]===_0x3b9051(0xac)&&Number[_0x3b9051(0xd6)](_0x5e88df[_0x3b9051(0xd3)]))return{'dbId':_0x5e88df['dbId'],'dbName':_0x5e88df[_0x3b9051(0xa7)]};}catch{}throw CliErrors[_0x3b9051(0x9b)](_0x3b9051(0xb3)+_0x1a5191);}function resolveProvidedDbId(_0x10add5){const _0x2e8b7c=a121_0x237675,_0x49a3c8=_0x10add5[_0x2e8b7c(0xbe)]('db-id');if(typeof _0x49a3c8===_0x2e8b7c(0xac)&&Number[_0x2e8b7c(0xd6)](_0x49a3c8))return _0x49a3c8;return undefined;}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
const a122_0x2f2f91=a122_0x55f8;(function(_0x442144,_0xb4b026){const _0x58aee0=a122_0x55f8,_0x4bc684=_0x442144();while(!![]){try{const _0x1acae5=-parseInt(_0x58aee0(0x1ae))/0x1+-parseInt(_0x58aee0(0x1ac))/0x2*(-parseInt(_0x58aee0(0x1bc))/0x3)+parseInt(_0x58aee0(0x1ab))/0x4+parseInt(_0x58aee0(0x1ce))/0x5*(parseInt(_0x58aee0(0x1c2))/0x6)+parseInt(_0x58aee0(0x1ca))/0x7*(-parseInt(_0x58aee0(0x1cd))/0x8)+-parseInt(_0x58aee0(0x1b4))/0x9*(parseInt(_0x58aee0(0x1c3))/0xa)+parseInt(_0x58aee0(0x1d0))/0xb*(parseInt(_0x58aee0(0x1ba))/0xc);if(_0x1acae5===_0xb4b026)break;else _0x4bc684['push'](_0x4bc684['shift']());}catch(_0x1c7fc4){_0x4bc684['push'](_0x4bc684['shift']());}}}(a122_0x9879,0x446cf));import{mkdir,readdir,rename,rmdir}from'node:fs/promises';import{dirname,join,relative,resolve,sep}from'node:path';import{deleteSqlQuery}from'../../core/api-client.js';import{loadSqlProjectConfig}from'../../core/sql-sync/config.js';import{fileExists}from'../../core/bff/file-system.js';function a122_0x9879(){const _0x123f8e=['5kefvFa','lockFilePath','8407454zQeXUI','lastSync','remoteId','SQL\x20lock\x20file\x20not\x20found.\x20Run\x20`rabetbase\x20sql\x20create`\x20or\x20`rabetbase\x20sql\x20pull`\x20first.','\x20from\x20remote\x20and\x20move\x20local\x20file\x20to\x20','505244PKZLuZ','7582bRbjFQ','filter','488801EifndJ','fromEntries','startsWith','toISOString','POST','appCode','16326XuARtt','/smartapi/custom/deleteUserCustomSql','delete','sqlRoot','sqls','high-risk-write','12CcXWRo','Deleted\x20','51PlXvNK','SQL\x20lock\x20file\x20not\x20found.','sqlcode','trashedTo','\x20(local\x20file\x20moved\x20to\x20trash)','validation','2557266FnDviB','770qwbvgS','str','sqlRootDir','No\x20SQL\x20lock\x20entry\x20found\x20for\x20\x22','Delete\x20a\x20SQL\x20query\x20from\x20remote\x20and\x20local','sql','projectRoot','21hMmeKf','trashDir','Would\x20delete\x20SQL\x20','1260088qojadq'];a122_0x9879=function(){return _0x123f8e;};return a122_0x9879();}function a122_0x55f8(_0x5caadb,_0x705503){_0x5caadb=_0x5caadb-0x1a8;const _0x9879b7=a122_0x9879();let _0x55f82f=_0x9879b7[_0x5caadb];return _0x55f82f;}import{resolveLocalSqlFilePath}from'../../core/sql-sync/file-system.js';import{ensureSqlLockScope,readSqlLockFile,writeSqlLockFile}from'../../core/sql-sync/lock.js';import{CliErrors}from'../../errors.js';import{SQLCODE_FLAG}from'../../commands/common/flags.js';export const sqlDelete={'service':a122_0x2f2f91(0x1c8),'command':'delete','description':a122_0x2f2f91(0x1c7),'risk':a122_0x2f2f91(0x1b9),'flags':[SQLCODE_FLAG],async 'validate'(_0x303203){const _0x1571fb=a122_0x2f2f91,_0x3043da=loadSqlProjectConfig(_0x303203[_0x1571fb(0x1b3)]),_0xfe8591=await readSqlLockFile(_0x3043da[_0x1571fb(0x1cf)]);if(!_0xfe8591)throw CliErrors[_0x1571fb(0x1c1)](_0x1571fb(0x1a9));},async 'dryRun'(_0x3701d0){const _0x5b6f52=a122_0x2f2f91,_0x16c2ab=loadSqlProjectConfig(_0x3701d0[_0x5b6f52(0x1b3)]),_0x5a6e45=await readSqlLockFile(_0x16c2ab[_0x5b6f52(0x1cf)]);if(!_0x5a6e45)throw CliErrors[_0x5b6f52(0x1c1)](_0x5b6f52(0x1a9));const {appLock:_0xc06fd2}=ensureSqlLockScope(_0x5a6e45,_0x3701d0['appCode'],_0x16c2ab[_0x5b6f52(0x1b7)],_0x5b6f52(0x1b6)),_0x5187d1=_0x3701d0[_0x5b6f52(0x1c4)](_0x5b6f52(0x1be)),_0x68fb71=_0xc06fd2['sqls'][_0x5187d1];if(!_0x68fb71)throw CliErrors[_0x5b6f52(0x1c1)](_0x5b6f52(0x1c6)+_0x5187d1+'\x22.');return{'method':_0x5b6f52(0x1b2),'url':_0x5b6f52(0x1b5),'body':{'sqlCode':_0x5187d1,'id':_0x68fb71[_0x5b6f52(0x1a8)],'localPath':resolveLocalSqlFilePath(_0x16c2ab,_0x5187d1,_0x68fb71)},'description':_0x5b6f52(0x1cc)+_0x5187d1+_0x5b6f52(0x1aa)+_0x16c2ab['trashDir']};},async 'execute'(_0x7e614a){const _0x9a5719=a122_0x2f2f91,_0x14548b=loadSqlProjectConfig(_0x7e614a[_0x9a5719(0x1b3)]),_0x339aa8=await readSqlLockFile(_0x14548b['lockFilePath']);if(!_0x339aa8)throw CliErrors[_0x9a5719(0x1c1)](_0x9a5719(0x1bd));const {lockData:_0x581d32,appLock:_0x50bdee}=ensureSqlLockScope(_0x339aa8,_0x7e614a['appCode'],_0x14548b['sqlRoot'],_0x9a5719(0x1b6)),_0x41e0fc=_0x7e614a['str'](_0x9a5719(0x1be)),_0x4eaf75=_0x50bdee[_0x9a5719(0x1b8)][_0x41e0fc];if(!_0x4eaf75)throw CliErrors[_0x9a5719(0x1c1)]('No\x20SQL\x20lock\x20entry\x20found\x20for\x20\x22'+_0x41e0fc+'\x22.');await deleteSqlQuery({'id':_0x4eaf75[_0x9a5719(0x1a8)],'sqlCode':_0x41e0fc}),_0x50bdee[_0x9a5719(0x1b8)]=Object[_0x9a5719(0x1af)](Object['entries'](_0x50bdee[_0x9a5719(0x1b8)])[_0x9a5719(0x1ad)](([_0xe82c9f])=>_0xe82c9f!==_0x41e0fc)),_0x50bdee[_0x9a5719(0x1d1)]=new Date()['toISOString'](),await writeSqlLockFile(_0x14548b[_0x9a5719(0x1cf)],_0x581d32);const _0x4c55bf=resolveLocalSqlFilePath(_0x14548b,_0x41e0fc,_0x4eaf75);let _0x56a615;await fileExists(_0x4c55bf)&&(_0x56a615=await moveToTrash(_0x14548b[_0x9a5719(0x1c9)],_0x14548b[_0x9a5719(0x1cb)],_0x4c55bf),await cleanupEmptyDirectories(dirname(_0x4c55bf),_0x14548b[_0x9a5719(0x1c5)]));const _0x950737={'deleted':_0x41e0fc,'remoteId':_0x4eaf75['remoteId']};if(_0x56a615)_0x950737[_0x9a5719(0x1bf)]=_0x56a615;return{'ok':!![],'data':_0x950737,'message':_0x9a5719(0x1bb)+_0x41e0fc+(_0x56a615?_0x9a5719(0x1c0):'')};}};async function moveToTrash(_0x514049,_0x2112be,_0x368c92){const _0x3965d0=a122_0x2f2f91,_0x2e1b45=new Date()[_0x3965d0(0x1b1)]()['replace'](/[:.]/g,'-'),_0x25bd53=relative(_0x514049,_0x368c92),_0x5e837b=join(_0x2112be,_0x2e1b45,_0x25bd53);return await mkdir(dirname(_0x5e837b),{'recursive':!![]}),await rename(_0x368c92,_0x5e837b),_0x5e837b;}async function cleanupEmptyDirectories(_0xd93977,_0x251a62){const _0x49c21f=a122_0x2f2f91;let _0x430410=resolve(_0xd93977);const _0x3da1f5=resolve(_0x251a62);while(_0x430410[_0x49c21f(0x1b0)](''+_0x3da1f5+sep)||_0x430410===_0x3da1f5){if(_0x430410===_0x3da1f5)return;try{const _0x5981d4=await readdir(_0x430410);if(_0x5981d4['length']>0x0)return;await rmdir(_0x430410);}catch{return;}_0x430410=dirname(_0x430410);}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a123_0x42cba6=a123_0x2814;function a123_0x36d9(){const _0x4dbfef=['verbose','5471914sTcQVc','Get\x20custom\x20SQL\x20query\x20details\x20by\x20sqlCode','appCode','1498317yrqaiw','4694504bMipnF','Return\x20full\x20raw\x20SQL\x20query\x20object','dbId','bool','read','7964202oraRxt','detail','sql','3264020ecpmdf','description','926635tZrFjB','sqlContent','1108664XXcLvT'];a123_0x36d9=function(){return _0x4dbfef;};return a123_0x36d9();}(function(_0x5c3b1f,_0x28376f){const _0x7e1e5=a123_0x2814,_0x1ca06e=_0x5c3b1f();while(!![]){try{const _0x37c803=parseInt(_0x7e1e5(0x12b))/0x1+parseInt(_0x7e1e5(0x12d))/0x2+-parseInt(_0x7e1e5(0x132))/0x3+parseInt(_0x7e1e5(0x133))/0x4+parseInt(_0x7e1e5(0x129))/0x5+-parseInt(_0x7e1e5(0x126))/0x6+-parseInt(_0x7e1e5(0x12f))/0x7;if(_0x37c803===_0x28376f)break;else _0x1ca06e['push'](_0x1ca06e['shift']());}catch(_0x56cce8){_0x1ca06e['push'](_0x1ca06e['shift']());}}}(a123_0x36d9,0xaaa09));import{getSqlQueryInfo}from'../../core/api-client.js';import{getDbName}from'../../core/db-resolver.js';function a123_0x2814(_0x3e86c2,_0x14d1f6){_0x3e86c2=_0x3e86c2-0x123;const _0x36d999=a123_0x36d9();let _0x281421=_0x36d999[_0x3e86c2];return _0x281421;}import{SQLCODE_FLAG}from'../../commands/common/flags.js';export const sqlDetail={'service':a123_0x42cba6(0x128),'command':a123_0x42cba6(0x127),'description':a123_0x42cba6(0x130),'risk':a123_0x42cba6(0x125),'flags':[SQLCODE_FLAG,{'name':a123_0x42cba6(0x12e),'type':'boolean','description':a123_0x42cba6(0x134)}],async 'execute'(_0x52acab){const _0x15a8df=a123_0x42cba6,_0x2a34cd=await getSqlQueryInfo(_0x52acab[_0x15a8df(0x131)],_0x52acab['str']('sqlcode')),_0x8126fa=_0x52acab[_0x15a8df(0x124)](_0x15a8df(0x12e));if(_0x8126fa)return{'ok':!![],'data':_0x2a34cd};const _0x16aba6=_0x2a34cd[_0x15a8df(0x123)]?await getDbName(_0x52acab['appCode'],_0x2a34cd['dbId']):undefined;return{'ok':!![],'data':{'sqlCode':_0x2a34cd['sqlCode'],'sqlName':_0x2a34cd['sqlName'],'db':_0x16aba6?_0x16aba6+'\x20('+_0x2a34cd[_0x15a8df(0x123)]+')':_0x2a34cd[_0x15a8df(0x123)]??'','description':_0x2a34cd[_0x15a8df(0x12a)]??'','sqlContent':_0x2a34cd[_0x15a8df(0x12c)]??''}};}};
|
package/lib/commands/sql/exec.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a124_0x3d93a=a124_0x2d90;function a124_0x153c(){const _0x23e7a7=['SQL\x20parameters\x20as\x20JSON\x20string\x20(e.g.\x20\x27{\x22key\x22:\x22value\x22}\x27)','SQL\x20execution\x20failed','params','execResult','1613330mKCYJr','9tyoBLe','2199849crjkrn','796985hzLEon','Execute\x20a\x20custom\x20SQL\x20query\x20by\x20sqlCode','8MwICDX','12334888HFvXtS','Returned\x20','921635dpTbJp','sqlcode','length','execSuccess','sql','6451608zPUVyV','now','read','str','exec','30045EANTQx'];a124_0x153c=function(){return _0x23e7a7;};return a124_0x153c();}function a124_0x2d90(_0x4bf8a8,_0x2c35ce){_0x4bf8a8=_0x4bf8a8-0x13a;const _0x153cbb=a124_0x153c();let _0x2d90ab=_0x153cbb[_0x4bf8a8];return _0x2d90ab;}(function(_0x146642,_0x66ba5e){const _0x45a415=a124_0x2d90,_0x1193cc=_0x146642();while(!![]){try{const _0x3b4ed9=parseInt(_0x45a415(0x13c))/0x1+parseInt(_0x45a415(0x14b))/0x2+-parseInt(_0x45a415(0x14d))/0x3*(parseInt(_0x45a415(0x150))/0x4)+parseInt(_0x45a415(0x146))/0x5+-parseInt(_0x45a415(0x141))/0x6+parseInt(_0x45a415(0x14e))/0x7+-parseInt(_0x45a415(0x13a))/0x8*(-parseInt(_0x45a415(0x14c))/0x9);if(_0x3b4ed9===_0x66ba5e)break;else _0x1193cc['push'](_0x1193cc['shift']());}catch(_0x5edda6){_0x1193cc['push'](_0x1193cc['shift']());}}}(a124_0x153c,0xcf13f));import{executeSql}from'../../core/api-client.js';import{SQLCODE_FLAG}from'../../commands/common/flags.js';import{parseJsonParams}from'../../utils/params.js';export const sqlExec={'service':a124_0x3d93a(0x140),'command':a124_0x3d93a(0x145),'description':a124_0x3d93a(0x14f),'risk':a124_0x3d93a(0x143),'flags':[SQLCODE_FLAG,{'name':a124_0x3d93a(0x149),'type':'string','description':a124_0x3d93a(0x147)}],async 'execute'(_0x19b0c8){const _0x29c186=a124_0x3d93a,_0x3b106e=parseJsonParams(_0x19b0c8[_0x29c186(0x144)](_0x29c186(0x149))),_0x239f6d=Date[_0x29c186(0x142)](),_0x427035=await executeSql(_0x19b0c8['appCode'],_0x19b0c8[_0x29c186(0x144)](_0x29c186(0x13d)),_0x3b106e),_0x181d18=Date['now']()-_0x239f6d,_0x232da8=_0x427035?.[_0x29c186(0x14a)]??_0x427035,_0x4bdf63=_0x427035?.[_0x29c186(0x13f)]??!![];if(!_0x4bdf63)return{'ok':![],'data':{'error':_0x427035?.['execError']||_0x29c186(0x148),'elapsed':_0x181d18},'message':'SQL\x20execution\x20failed'};const _0x2db96d=Array['isArray'](_0x232da8)?_0x232da8:[];return{'ok':!![],'data':{'rows':_0x2db96d,'rowCount':_0x2db96d[_0x29c186(0x13e)],'elapsed':_0x181d18},'message':_0x29c186(0x13b)+_0x2db96d[_0x29c186(0x13e)]+'\x20row(s)\x20in\x20'+_0x181d18+'ms'};}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
(function(_0xe31323,_0x443a79){const _0x4ea752=a125_0x4c5d,_0x509d00=_0xe31323();while(!![]){try{const _0x5ece7b=parseInt(_0x4ea752(0xe4))/0x1*(parseInt(_0x4ea752(0xe2))/0x2)+parseInt(_0x4ea752(0xe7))/0x3*(-parseInt(_0x4ea752(0xe1))/0x4)+-parseInt(_0x4ea752(0xe6))/0x5+parseInt(_0x4ea752(0xe0))/0x6*(parseInt(_0x4ea752(0xde))/0x7)+parseInt(_0x4ea752(0xdf))/0x8+-parseInt(_0x4ea752(0xe5))/0x9+parseInt(_0x4ea752(0xe3))/0xa;if(_0x5ece7b===_0x443a79)break;else _0x509d00['push'](_0x509d00['shift']());}catch(_0xa0b249){_0x509d00['push'](_0x509d00['shift']());}}}(a125_0x4189,0x91cb2));import{sqlList}from'../../commands/sql/list.js';import{sqlDetail}from'../../commands/sql/detail.js';function a125_0x4c5d(_0x3ed191,_0xcacfbd){_0x3ed191=_0x3ed191-0xde;const _0x41890d=a125_0x4189();let _0x4c5d91=_0x41890d[_0x3ed191];return _0x4c5d91;}import{sqlValidate}from'../../commands/sql/validate.js';import{sqlSave}from'../../commands/sql/save.js';import{sqlExec}from'../../commands/sql/exec.js';import{sqlPull}from'../../commands/sql/pull.js';import{sqlCreate}from'../../commands/sql/create.js';import{sqlStatus}from'../../commands/sql/status.js';import{sqlPush}from'../../commands/sql/push.js';import{sqlDelete}from'../../commands/sql/delete.js';function a125_0x4189(){const _0x5cc731=['6XqbXKt','127076romefF','11464CLBxmB','5084800SBogpK','191mBfJiP','5610852YjgJTr','1109440MZwXjV','93PIYVFb','2700523Mkmwyh','3505952eEvEpr'];a125_0x4189=function(){return _0x5cc731;};return a125_0x4189();}export const sqlDefinitions=[sqlList,sqlDetail,sqlStatus,sqlCreate,sqlPush,sqlValidate,sqlSave,sqlExec,sqlPull,sqlDelete];
|
package/lib/commands/sql/list.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
const a126_0x20361d=a126_0xc907;(function(_0x3f707c,_0x4e4b22){const _0x596f2a=a126_0xc907,_0x40b096=_0x3f707c();while(!![]){try{const _0x571644=-parseInt(_0x596f2a(0x14d))/0x1+-parseInt(_0x596f2a(0x12a))/0x2*(-parseInt(_0x596f2a(0x146))/0x3)+-parseInt(_0x596f2a(0x12d))/0x4*(-parseInt(_0x596f2a(0x143))/0x5)+parseInt(_0x596f2a(0x148))/0x6+parseInt(_0x596f2a(0x145))/0x7+parseInt(_0x596f2a(0x12e))/0x8*(-parseInt(_0x596f2a(0x140))/0x9)+-parseInt(_0x596f2a(0x14a))/0xa;if(_0x571644===_0x4e4b22)break;else _0x40b096['push'](_0x40b096['shift']());}catch(_0x5133cf){_0x40b096['push'](_0x40b096['shift']());}}}(a126_0x1baf,0x2ae1e));function a126_0xc907(_0x3f69ed,_0x30f761){_0x3f69ed=_0x3f69ed-0x129;const _0x1baf6b=a126_0x1baf();let _0xc907a2=_0x1baf6b[_0x3f69ed];return _0xc907a2;}import{listSqlQueries}from'../../core/api-client.js';import{getDbName}from'../../core/db-resolver.js';function a126_0x1baf(){const _0x2e4b28=['92BlkZYg','72CkYcZb','description','sqlName','str','number','all','length','pagesize','\x20SQL\x20queries\x20(total:\x20','bool','sqlCode','sqlcode','dbId','page','sql','num','read','Found\x20','185526wLSRvB','string','totalCount','22865AlThXu','verbose','578214EqRlYJ','45069NMjwtK','Page\x20size','1237896ndJpyo','Page\x20number','362420JBpFaH','Return\x20full\x20SQL\x20query\x20objects\x20including\x20parameters\x20and\x20SQL\x20content','No\x20custom\x20SQL\x20queries\x20found.','146913skPEGu','Filter\x20by\x20SQL\x20name','20cuYrqm','list','name'];a126_0x1baf=function(){return _0x2e4b28;};return a126_0x1baf();}import{SQLCODE_FLAG_OPTIONAL}from'../../commands/common/flags.js';export const sqlList={'service':a126_0x20361d(0x13c),'command':a126_0x20361d(0x12b),'description':'List\x20custom\x20SQL\x20queries','risk':a126_0x20361d(0x13e),'flags':[SQLCODE_FLAG_OPTIONAL,{'name':'name','type':a126_0x20361d(0x141),'description':a126_0x20361d(0x129)},{'name':'page','type':a126_0x20361d(0x132),'description':a126_0x20361d(0x149),'default':0x1},{'name':a126_0x20361d(0x135),'type':a126_0x20361d(0x132),'description':a126_0x20361d(0x147)},{'name':a126_0x20361d(0x144),'type':'boolean','description':a126_0x20361d(0x14b)}],async 'execute'(_0x128d6a){const _0x2bfb52=a126_0x20361d,_0x2d4d98=await listSqlQueries(_0x128d6a['appCode'],{'sqlCode':_0x128d6a[_0x2bfb52(0x131)](_0x2bfb52(0x139))||undefined,'sqlName':_0x128d6a['str'](_0x2bfb52(0x12c))||undefined,'currentPage':_0x128d6a[_0x2bfb52(0x13d)](_0x2bfb52(0x13b)),'pageSize':_0x128d6a['num'](_0x2bfb52(0x135),0x32)}),_0x237d31=_0x128d6a[_0x2bfb52(0x137)](_0x2bfb52(0x144)),_0x3aa9f4=_0x2d4d98['tableData']??[],_0x30cc21=_0x2d4d98['paging']?.[_0x2bfb52(0x142)]??_0x3aa9f4[_0x2bfb52(0x134)];let _0x41b6cf;return _0x237d31?_0x41b6cf=_0x3aa9f4:_0x41b6cf=await Promise[_0x2bfb52(0x133)](_0x3aa9f4['map'](async _0x528378=>{const _0x43ff26=_0x2bfb52;let _0x4bf3d5;try{_0x4bf3d5=_0x528378[_0x43ff26(0x13a)]?await getDbName(_0x128d6a['appCode'],_0x528378['dbId']):undefined;}catch{}return{'sqlCode':_0x528378[_0x43ff26(0x138)],'sqlName':_0x528378[_0x43ff26(0x130)],'description':_0x528378[_0x43ff26(0x12f)]??'','db':_0x4bf3d5?_0x4bf3d5+'\x20('+_0x528378[_0x43ff26(0x13a)]+')':_0x528378[_0x43ff26(0x13a)]??''};})),{'ok':!![],'data':_0x41b6cf,'message':_0x3aa9f4[_0x2bfb52(0x134)]===0x0?_0x2bfb52(0x14c):_0x2bfb52(0x13f)+_0x3aa9f4['length']+_0x2bfb52(0x136)+_0x30cc21+').'};}};
|
package/lib/commands/sql/pull.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const a126_0x6b996d=a126_0x428b;(function(_0x2754dc,_0x49324e){const _0x3ec9c0=a126_0x428b,_0x2cfd85=_0x2754dc();while(!![]){try{const _0xd41e1e=-parseInt(_0x3ec9c0(0x121))/0x1+-parseInt(_0x3ec9c0(0xfb))/0x2+-parseInt(_0x3ec9c0(0x122))/0x3*(parseInt(_0x3ec9c0(0x11a))/0x4)+-parseInt(_0x3ec9c0(0x113))/0x5+-parseInt(_0x3ec9c0(0x10d))/0x6*(parseInt(_0x3ec9c0(0x11f))/0x7)+-parseInt(_0x3ec9c0(0xf2))/0x8+parseInt(_0x3ec9c0(0xfe))/0x9;if(_0xd41e1e===_0x49324e)break;else _0x2cfd85['push'](_0x2cfd85['shift']());}catch(_0x2be74b){_0x2cfd85['push'](_0x2cfd85['shift']());}}}(a126_0x1062,0x88f47));import{readFile,rm,writeFile}from'node:fs/promises';import{join}from'node:path';import{getSqlQueryDetail,listSqlQueries}from'../../core/api-client.js';import{ensureParentDirectory,fileExists}from'../../core/bff/file-system.js';import{getDbName}from'../../core/db-resolver.js';import{loadSqlProjectConfig}from'../../core/sql-sync/config.js';import{computeSqlContentHash}from'../../core/sql-sync/hash.js';import{createEmptySqlLock,ensureSqlLockScope,readSqlLockFile,writeSqlLockFile}from'../../core/sql-sync/lock.js';function a126_0x428b(_0x543b06,_0x5d44a1){_0x543b06=_0x543b06-0xec;const _0x106211=a126_0x1062();let _0x428b12=_0x106211[_0x543b06];return _0x428b12;}function a126_0x1062(){const _0x3a026c=['sqls','Force\x20pull\x20cancelled.','96KCdLIU','skipped','would_pull','Pull\x20remote\x20SQL\x20queries\x20to\x20local\x20.rabetbase/sql/','sqlRootDir','43036VrnTgw','dbId','628024SFnnSO','25371XQFTSR','description','lockFilePath','paging','\x20failed','local\x20differs\x20from\x20remote','push','length','string','catch','3219360QCGTes','str','Force\x20pull\x20will\x20overwrite\x20local\x20SQL\x20that\x20differs\x20from\x20remote.','sql','split','unchanged','path','appCode','sqlContent','1933832uWFawy','POST','cancelled','37325943hNyGQB','name','\x20SQL\x20file(s)\x20into\x20','message','\x20skipped,\x20','sqlRoot','pull','trimStart','test','tableData','bool','utf8','conflict','sqlName','sqlCode','816toKpTy','force','toISOString','Pull\x20complete:\x20','filter','join','2749520eBjOBZ','sqlcode','totalCount','Force\x20overwrite\x20local\x20unsynced\x20changes','apps'];a126_0x1062=function(){return _0x3a026c;};return a126_0x1062();}import{resolveLocalSqlFilePath}from'../../core/sql-sync/file-system.js';import{CliErrors}from'../../errors.js';import{SQLCODE_FLAG_OPTIONAL}from'../../commands/common/flags.js';import{buildLocalSqlFileContent,buildSqlLockEntry,cloneSqlLockData,confirmForceOverwrite,ensureRemoteSqlContent,stripLocalSqlMetadata}from'./shared.js';const PAGE_SIZE=0x64;async function fetchAllSqlQueries(_0x383470,_0x1c26c4){const _0x2b635e=a126_0x428b,_0xcc7b87=[];let _0x39c92b=0x1;while(!![]){const _0x22e3f2=await listSqlQueries(_0x383470,{'currentPage':_0x39c92b,'pageSize':PAGE_SIZE,'sqlCode':_0x1c26c4[_0x2b635e(0x10c)],'sqlName':_0x1c26c4[_0x2b635e(0x10b)]}),_0x301b6f=_0x22e3f2[_0x2b635e(0x107)]??[];_0xcc7b87[_0x2b635e(0xee)](..._0x301b6f);if(_0x301b6f['length']===0x0)break;const _0x34011b=_0x22e3f2[_0x2b635e(0x125)]?.[_0x2b635e(0x115)];if(_0x34011b!=null?_0xcc7b87[_0x2b635e(0xef)]>=_0x34011b:_0x301b6f[_0x2b635e(0xef)]<PAGE_SIZE)break;_0x39c92b++;}return _0xcc7b87;}async function ensureSqlContent(_0x19bcbd){const _0x21f43f=a126_0x428b;if(_0x19bcbd[_0x21f43f(0xfa)]!=null&&String(_0x19bcbd['sqlContent'])['length']>0x0)return _0x19bcbd;return getSqlQueryDetail(_0x19bcbd['sqlCode']);}export const sqlPull={'service':'sql','command':'pull','description':a126_0x6b996d(0x11d),'risk':'write','flags':[SQLCODE_FLAG_OPTIONAL,{'name':'name','type':a126_0x6b996d(0xf0),'description':'Filter\x20by\x20SQL\x20display\x20name'},{'name':'force','type':'boolean','description':a126_0x6b996d(0x116)}],async 'dryRun'(_0x1edb28){const _0x33fedf=a126_0x6b996d,_0x2537ec=loadSqlProjectConfig(_0x1edb28[_0x33fedf(0xf9)]),_0x3128f2=await readSqlLockFile(_0x2537ec[_0x33fedf(0x124)]),{appLock:_0x4fb4a0}=ensureSqlLockScope(_0x3128f2??createEmptySqlLock(),_0x2537ec['appCode'],_0x2537ec['sqlRoot'],'pull'),_0xaaf370=await fetchAllSqlQueries(_0x1edb28[_0x33fedf(0xf9)],{'sqlCode':_0x1edb28[_0x33fedf(0xf3)](_0x33fedf(0x114))||undefined,'sqlName':_0x1edb28[_0x33fedf(0xf3)]('name')||undefined}),_0x2b7d2f=[];for(const _0x1764be of _0xaaf370){const _0x3a14d6=await ensureSqlContent(_0x1764be),_0x3da70c=ensureRemoteSqlContent(_0x3a14d6),_0x2a8d3a=detectModeFromSql(_0x3a14d6),_0x471821=_0x3a14d6[_0x33fedf(0x120)]?await getDbName(_0x1edb28[_0x33fedf(0xf9)],Number(_0x3a14d6[_0x33fedf(0x120)]))['catch'](()=>undefined):undefined,_0x5865b0=buildLocalSqlFileContent({'sqlCode':_0x3a14d6['sqlCode'],'sqlName':_0x3a14d6['sqlName'],'dbId':_0x3a14d6[_0x33fedf(0x120)]},_0x3da70c,{'dbName':_0x471821,'mode':_0x2a8d3a,'syncedAt':new Date()[_0x33fedf(0x10f)](),'description':_0x3a14d6[_0x33fedf(0x123)]}),_0x418c94=buildSqlLockEntry(_0x3a14d6,_0x3da70c,'',{'dbName':_0x471821}),_0x511e49=resolveLocalSqlFilePath(_0x2537ec,_0x3a14d6[_0x33fedf(0x10c)],_0x418c94);let _0x517265=_0x33fedf(0x11c),_0x54afc7;if(await fileExists(_0x511e49)){const _0x16ceaa=await readFile(_0x511e49,'utf8');isEquivalentPulledSqlFile(_0x16ceaa,_0x5865b0,_0x2a8d3a)?(_0x517265=_0x33fedf(0x11b),_0x54afc7=_0x33fedf(0xf7)):(_0x517265=_0x33fedf(0x10a),_0x54afc7='local\x20differs\x20from\x20remote\x20(use\x20--force\x20to\x20overwrite)');}_0x2b7d2f['push']({'sqlCode':_0x3a14d6[_0x33fedf(0x10c)],'sqlName':_0x3a14d6[_0x33fedf(0x10b)],'filePath':_0x511e49,'status':_0x517265,'reason':_0x54afc7});}return{'method':_0x33fedf(0xfc),'url':'/smartapi/custom/queryUserCustomSqlList\x20+\x20/smartapi/custom/getUserCustomSql','body':{'appCode':_0x1edb28['appCode'],'sqlCode':_0x1edb28[_0x33fedf(0xf3)]('sqlcode')||null,'sqlName':_0x1edb28[_0x33fedf(0xf3)](_0x33fedf(0xff))||null,'files':_0x2b7d2f},'description':'Would\x20pull\x20'+_0x2b7d2f[_0x33fedf(0xef)]+_0x33fedf(0x100)+_0x2537ec[_0x33fedf(0x11e)]};},async 'execute'(_0x466ece){const _0x45d0bc=a126_0x6b996d,_0x2ef6b2=loadSqlProjectConfig(_0x466ece[_0x45d0bc(0xf9)]),_0xbbd36a=await readSqlLockFile(_0x2ef6b2['lockFilePath']),{lockData:_0x400503,appLock:_0x3ddd34}=ensureSqlLockScope(_0xbbd36a??createEmptySqlLock(),_0x2ef6b2[_0x45d0bc(0xf9)],_0x2ef6b2[_0x45d0bc(0x103)],_0x45d0bc(0x104)),_0x3bd82b=_0x466ece[_0x45d0bc(0x108)](_0x45d0bc(0x10e)),_0x95be5e=await fetchAllSqlQueries(_0x466ece[_0x45d0bc(0xf9)],{'sqlCode':_0x466ece[_0x45d0bc(0xf3)]('sqlcode')||undefined,'sqlName':_0x466ece[_0x45d0bc(0xf3)]('name')||undefined});if(_0x95be5e[_0x45d0bc(0xef)]===0x0)return{'ok':!![],'data':{'pulled':[],'skipped':[],'failed':[]},'message':'No\x20remote\x20SQL\x20queries\x20matched.'};const _0x2ea07d=[],_0x387aec=[];for(const _0xe7421b of _0x95be5e){try{_0x2ea07d[_0x45d0bc(0xee)](await ensureSqlContent(_0xe7421b));}catch(_0x67e9f4){_0x387aec[_0x45d0bc(0xee)]({'sqlCode':_0xe7421b[_0x45d0bc(0x10c)],'error':_0x67e9f4 instanceof Error?_0x67e9f4[_0x45d0bc(0x101)]:String(_0x67e9f4)});}}if(_0x3bd82b&&!_0x466ece['nonInteractive']){let _0x2308e1=![];for(const _0x3ab5b8 of _0x2ea07d){const _0x2bc9d3=detectModeFromSql(_0x3ab5b8),_0x5de0c2=_0x3ab5b8[_0x45d0bc(0x120)]?await getDbName(_0x466ece[_0x45d0bc(0xf9)],Number(_0x3ab5b8[_0x45d0bc(0x120)]))[_0x45d0bc(0xf1)](()=>undefined):undefined,_0x4da110=buildLocalSqlFileContent({'sqlCode':_0x3ab5b8[_0x45d0bc(0x10c)],'sqlName':_0x3ab5b8[_0x45d0bc(0x10b)],'dbId':_0x3ab5b8['dbId']},ensureRemoteSqlContent(_0x3ab5b8),{'dbName':_0x5de0c2,'mode':_0x2bc9d3,'syncedAt':new Date()['toISOString'](),'description':_0x3ab5b8[_0x45d0bc(0x123)]}),_0x382be2=resolveLocalSqlFilePath(_0x2ef6b2,_0x3ab5b8[_0x45d0bc(0x10c)],buildSqlLockEntry(_0x3ab5b8,ensureRemoteSqlContent(_0x3ab5b8),'',{'dbName':_0x5de0c2}));if(await fileExists(_0x382be2)){const _0xa96e33=await readFile(_0x382be2,_0x45d0bc(0x109));if(!isEquivalentPulledSqlFile(_0xa96e33,_0x4da110,_0x2bc9d3)){_0x2308e1=!![];break;}}}if(_0x2308e1){const _0xf6e049=await confirmForceOverwrite(_0x45d0bc(0xf4));if(!_0xf6e049)throw CliErrors[_0x45d0bc(0xfd)](_0x45d0bc(0x119));}}const _0xe29912=cloneSqlLockData(_0x400503),_0x16e35f=_0xe29912[_0x45d0bc(0x117)][_0x2ef6b2[_0x45d0bc(0xf9)]],_0x1c6912=[],_0x33c818=[];for(const _0x1374f4 of _0x2ea07d){const _0x2cde0c=_0x16e35f['sqls'][_0x1374f4[_0x45d0bc(0x10c)]],_0x511582=ensureRemoteSqlContent(_0x1374f4),_0x431705=detectModeFromSql(_0x1374f4),_0x187910=_0x1374f4['dbId']?await getDbName(_0x466ece[_0x45d0bc(0xf9)],Number(_0x1374f4[_0x45d0bc(0x120)]))['catch'](()=>undefined):undefined,_0x380888=buildLocalSqlFileContent({'sqlCode':_0x1374f4[_0x45d0bc(0x10c)],'sqlName':_0x1374f4[_0x45d0bc(0x10b)],'dbId':_0x1374f4[_0x45d0bc(0x120)]},_0x511582,{'dbName':_0x187910,'mode':_0x431705,'syncedAt':new Date()[_0x45d0bc(0x10f)](),'description':_0x1374f4['description']}),_0x22e2d7=buildSqlLockEntry(_0x1374f4,_0x511582,computeSqlContentHash(_0x380888),{'dbName':_0x187910}),_0x6baa05=_0x22e2d7[_0x45d0bc(0xf8)],_0x4abf9a=join(_0x2ef6b2[_0x45d0bc(0x11e)],_0x6baa05);try{if(await fileExists(_0x4abf9a)){const _0x953d9b=await readFile(_0x4abf9a,_0x45d0bc(0x109));if(isEquivalentPulledSqlFile(_0x953d9b,_0x380888,_0x431705)){_0x33c818[_0x45d0bc(0xee)]({'sqlCode':_0x1374f4[_0x45d0bc(0x10c)],'reason':_0x45d0bc(0xf7)}),_0x16e35f['sqls'][_0x1374f4[_0x45d0bc(0x10c)]]={..._0x22e2d7,'hash':computeSqlContentHash(_0x953d9b),'path':_0x6baa05};continue;}if(!_0x3bd82b){_0x33c818[_0x45d0bc(0xee)]({'sqlCode':_0x1374f4[_0x45d0bc(0x10c)],'reason':_0x45d0bc(0xed)});continue;}}const _0x19a8b0=_0x2cde0c?.[_0x45d0bc(0xf8)]?join(_0x2ef6b2['sqlRootDir'],_0x2cde0c['path']):undefined;_0x19a8b0&&_0x19a8b0!==_0x4abf9a&&await fileExists(_0x19a8b0)&&await rm(_0x19a8b0,{'force':!![]}),await ensureParentDirectory(_0x4abf9a),await writeFile(_0x4abf9a,_0x380888,_0x45d0bc(0x109)),_0x16e35f[_0x45d0bc(0x118)][_0x1374f4[_0x45d0bc(0x10c)]]={..._0x22e2d7,'path':_0x6baa05},_0x1c6912[_0x45d0bc(0xee)]({'sqlCode':_0x1374f4[_0x45d0bc(0x10c)],'filePath':_0x4abf9a});}catch(_0x2612d4){_0x387aec[_0x45d0bc(0xee)]({'sqlCode':_0x1374f4[_0x45d0bc(0x10c)],'error':_0x2612d4 instanceof Error?_0x2612d4[_0x45d0bc(0x101)]:String(_0x2612d4)});}}return _0x16e35f['lastSync']=new Date()[_0x45d0bc(0x10f)](),await writeSqlLockFile(_0x2ef6b2[_0x45d0bc(0x124)],_0xe29912),{'ok':_0x387aec[_0x45d0bc(0xef)]===0x0,'data':{'pulled':_0x1c6912,'skipped':_0x33c818,'failed':_0x387aec},'message':_0x45d0bc(0x110)+_0x1c6912[_0x45d0bc(0xef)]+'\x20written,\x20'+_0x33c818['length']+_0x45d0bc(0x102)+_0x387aec[_0x45d0bc(0xef)]+_0x45d0bc(0xec)};}};function detectModeFromSql(_0x53f7f5){const _0x157b4b=a126_0x6b996d,_0x260da8=ensureRemoteSqlContent(_0x53f7f5),_0x49eea7=stripLocalSqlMetadata(_0x260da8,'mybatisXml')[_0x157b4b(0x105)]();if(/^<(select|insert|update|delete)\b/i[_0x157b4b(0x106)](_0x49eea7))return'mybatisXml';return _0x157b4b(0xf5);}function isEquivalentPulledSqlFile(_0x3b40e5,_0x177a95,_0x13e754){return normalizePullComparableContent(_0x3b40e5,_0x13e754)===normalizePullComparableContent(_0x177a95,_0x13e754);}function normalizePullComparableContent(_0x3e8cf1,_0x3989f2){const _0x211e30=a126_0x6b996d,_0x5780c4=_0x3e8cf1['replace'](/\r\n/g,'\x0a')[_0x211e30(0xf6)]('\x0a'),_0x4da598=_0x5780c4[_0x211e30(0x111)](_0x213641=>!isSyncedAtMetadataLine(_0x213641,_0x3989f2));return _0x4da598[_0x211e30(0x112)]('\x0a');}function isSyncedAtMetadataLine(_0x49ece7,_0x1ea41a){const _0x1ae406=a126_0x6b996d;if(_0x1ea41a==='mybatisXml')return/^\s*<!--\s*@lovrabet\.syncedAt:/[_0x1ae406(0x106)](_0x49ece7);return/^\s*--\s*@lovrabet\.syncedAt:/[_0x1ae406(0x106)](_0x49ece7);}
|
|
1
|
+
const a127_0xbf3202=a127_0xb046;(function(_0x26b5e1,_0x396338){const _0x708164=a127_0xb046,_0x14aa14=_0x26b5e1();while(!![]){try{const _0x2d0bd1=parseInt(_0x708164(0x1cc))/0x1+-parseInt(_0x708164(0x1c6))/0x2*(parseInt(_0x708164(0x1b3))/0x3)+-parseInt(_0x708164(0x1b2))/0x4+-parseInt(_0x708164(0x1cb))/0x5*(-parseInt(_0x708164(0x1d9))/0x6)+-parseInt(_0x708164(0x1d8))/0x7+parseInt(_0x708164(0x1c5))/0x8+parseInt(_0x708164(0x1af))/0x9*(parseInt(_0x708164(0x1a3))/0xa);if(_0x2d0bd1===_0x396338)break;else _0x14aa14['push'](_0x14aa14['shift']());}catch(_0x54944d){_0x14aa14['push'](_0x14aa14['shift']());}}}(a127_0x1b48,0xc5043));import{readFile,rm,writeFile}from'node:fs/promises';import{join}from'node:path';import{getSqlQueryDetail,listSqlQueries}from'../../core/api-client.js';import{ensureParentDirectory,fileExists}from'../../core/bff/file-system.js';import{getDbName}from'../../core/db-resolver.js';function a127_0xb046(_0x181326,_0x3ce9ad){_0x181326=_0x181326-0x1a3;const _0x1b48b1=a127_0x1b48();let _0xb04690=_0x1b48b1[_0x181326];return _0xb04690;}import{loadSqlProjectConfig}from'../../core/sql-sync/config.js';import{computeSqlContentHash}from'../../core/sql-sync/hash.js';import{createEmptySqlLock,ensureSqlLockScope,readSqlLockFile,writeSqlLockFile}from'../../core/sql-sync/lock.js';import{resolveLocalSqlFilePath}from'../../core/sql-sync/file-system.js';import{CliErrors}from'../../errors.js';import{SQLCODE_FLAG_OPTIONAL}from'../../commands/common/flags.js';import{buildLocalSqlFileContent,buildSqlLockEntry,cloneSqlLockData,confirmForceOverwrite,ensureRemoteSqlContent,stripLocalSqlMetadata}from'./shared.js';const PAGE_SIZE=0x64;async function fetchAllSqlQueries(_0x3b7097,_0x13751a){const _0x2f3564=a127_0xb046,_0xdc457f=[];let _0x39e816=0x1;while(!![]){const _0xa1d3ca=await listSqlQueries(_0x3b7097,{'currentPage':_0x39e816,'pageSize':PAGE_SIZE,'sqlCode':_0x13751a[_0x2f3564(0x1ba)],'sqlName':_0x13751a[_0x2f3564(0x1cd)]}),_0x2fec2f=_0xa1d3ca[_0x2f3564(0x1da)]??[];_0xdc457f[_0x2f3564(0x1b8)](..._0x2fec2f);if(_0x2fec2f['length']===0x0)break;const _0x4108a4=_0xa1d3ca[_0x2f3564(0x1ae)]?.[_0x2f3564(0x1ac)];if(_0x4108a4!=null?_0xdc457f[_0x2f3564(0x1a9)]>=_0x4108a4:_0x2fec2f['length']<PAGE_SIZE)break;_0x39e816++;}return _0xdc457f;}async function ensureSqlContent(_0x15146a){const _0x5490b8=a127_0xb046;if(_0x15146a[_0x5490b8(0x1a6)]!=null&&String(_0x15146a[_0x5490b8(0x1a6)])[_0x5490b8(0x1a9)]>0x0)return _0x15146a;return getSqlQueryDetail(_0x15146a['sqlCode']);}function a127_0x1b48(){const _0x2c1e72=['length','sqlRoot','Would\x20pull\x20','totalCount','nonInteractive','paging','224559uwdFqN','split','boolean','1905852MEJKiI','9qTRUNX','dbId','catch','string','pull','push','write','sqlCode','sqlRootDir','No\x20remote\x20SQL\x20queries\x20matched.','message','appCode','join','toISOString','local\x20differs\x20from\x20remote','skipped','local\x20differs\x20from\x20remote\x20(use\x20--force\x20to\x20overwrite)','\x20failed','3395968aWgKys','764806dPzzQe','sqls','/smartapi/custom/queryUserCustomSqlList\x20+\x20/smartapi/custom/getUserCustomSql','utf8','apps','5KZGxUk','71747ivFFaE','sqlName','mybatisXml','name','test','bool','path','conflict','sql','\x20skipped,\x20','lastSync','sqlcode','7649481Gyiiyb','7983138jUibLv','tableData','str','lockFilePath','Pull\x20complete:\x20','force','680FiGyTb','\x20written,\x20','description','sqlContent','would_pull','POST'];a127_0x1b48=function(){return _0x2c1e72;};return a127_0x1b48();}export const sqlPull={'service':a127_0xbf3202(0x1d4),'command':a127_0xbf3202(0x1b7),'description':'Pull\x20remote\x20SQL\x20queries\x20to\x20local\x20.rabetbase/sql/','risk':a127_0xbf3202(0x1b9),'flags':[SQLCODE_FLAG_OPTIONAL,{'name':a127_0xbf3202(0x1cf),'type':a127_0xbf3202(0x1b6),'description':'Filter\x20by\x20SQL\x20display\x20name'},{'name':'force','type':a127_0xbf3202(0x1b1),'description':'Force\x20overwrite\x20local\x20unsynced\x20changes'}],async 'dryRun'(_0x37f05c){const _0xc34539=a127_0xbf3202,_0x3b140a=loadSqlProjectConfig(_0x37f05c['appCode']),_0x18e685=await readSqlLockFile(_0x3b140a[_0xc34539(0x1dc)]),{appLock:_0x33404b}=ensureSqlLockScope(_0x18e685??createEmptySqlLock(),_0x3b140a['appCode'],_0x3b140a[_0xc34539(0x1aa)],_0xc34539(0x1b7)),_0x4114e4=await fetchAllSqlQueries(_0x37f05c['appCode'],{'sqlCode':_0x37f05c['str'](_0xc34539(0x1d7))||undefined,'sqlName':_0x37f05c['str'](_0xc34539(0x1cf))||undefined}),_0x4dd375=[];for(const _0xd45512 of _0x4114e4){const _0x10977b=await ensureSqlContent(_0xd45512),_0x12e5da=ensureRemoteSqlContent(_0x10977b),_0x36247b=detectModeFromSql(_0x10977b),_0x250453=_0x10977b['dbId']?await getDbName(_0x37f05c[_0xc34539(0x1be)],Number(_0x10977b[_0xc34539(0x1b4)]))['catch'](()=>undefined):undefined,_0x383848=buildLocalSqlFileContent({'sqlCode':_0x10977b[_0xc34539(0x1ba)],'sqlName':_0x10977b[_0xc34539(0x1cd)],'dbId':_0x10977b[_0xc34539(0x1b4)]},_0x12e5da,{'dbName':_0x250453,'mode':_0x36247b,'syncedAt':new Date()['toISOString'](),'description':_0x10977b[_0xc34539(0x1a5)]}),_0x4c548d=buildSqlLockEntry(_0x10977b,_0x12e5da,'',{'dbName':_0x250453}),_0x569861=resolveLocalSqlFilePath(_0x3b140a,_0x10977b['sqlCode'],_0x4c548d);let _0x40dca5=_0xc34539(0x1a7),_0x42d414;if(await fileExists(_0x569861)){const _0x54fda9=await readFile(_0x569861,_0xc34539(0x1c9));isEquivalentPulledSqlFile(_0x54fda9,_0x383848,_0x36247b)?(_0x40dca5=_0xc34539(0x1c2),_0x42d414='unchanged'):(_0x40dca5=_0xc34539(0x1d3),_0x42d414=_0xc34539(0x1c3));}_0x4dd375['push']({'sqlCode':_0x10977b[_0xc34539(0x1ba)],'sqlName':_0x10977b[_0xc34539(0x1cd)],'filePath':_0x569861,'status':_0x40dca5,'reason':_0x42d414});}return{'method':_0xc34539(0x1a8),'url':_0xc34539(0x1c8),'body':{'appCode':_0x37f05c['appCode'],'sqlCode':_0x37f05c['str'](_0xc34539(0x1d7))||null,'sqlName':_0x37f05c[_0xc34539(0x1db)](_0xc34539(0x1cf))||null,'files':_0x4dd375},'description':_0xc34539(0x1ab)+_0x4dd375[_0xc34539(0x1a9)]+'\x20SQL\x20file(s)\x20into\x20'+_0x3b140a['sqlRootDir']};},async 'execute'(_0x104095){const _0x1c3ac7=a127_0xbf3202,_0x56e478=loadSqlProjectConfig(_0x104095['appCode']),_0x24d0f0=await readSqlLockFile(_0x56e478[_0x1c3ac7(0x1dc)]),{lockData:_0x5761bd,appLock:_0x1f313d}=ensureSqlLockScope(_0x24d0f0??createEmptySqlLock(),_0x56e478[_0x1c3ac7(0x1be)],_0x56e478[_0x1c3ac7(0x1aa)],_0x1c3ac7(0x1b7)),_0x111b86=_0x104095[_0x1c3ac7(0x1d1)](_0x1c3ac7(0x1de)),_0x34e0cd=await fetchAllSqlQueries(_0x104095[_0x1c3ac7(0x1be)],{'sqlCode':_0x104095[_0x1c3ac7(0x1db)](_0x1c3ac7(0x1d7))||undefined,'sqlName':_0x104095[_0x1c3ac7(0x1db)](_0x1c3ac7(0x1cf))||undefined});if(_0x34e0cd[_0x1c3ac7(0x1a9)]===0x0)return{'ok':!![],'data':{'pulled':[],'skipped':[],'failed':[]},'message':_0x1c3ac7(0x1bc)};const _0x3ac030=[],_0x26c34c=[];for(const _0x20a967 of _0x34e0cd){try{_0x3ac030[_0x1c3ac7(0x1b8)](await ensureSqlContent(_0x20a967));}catch(_0x4e601a){_0x26c34c[_0x1c3ac7(0x1b8)]({'sqlCode':_0x20a967[_0x1c3ac7(0x1ba)],'error':_0x4e601a instanceof Error?_0x4e601a[_0x1c3ac7(0x1bd)]:String(_0x4e601a)});}}if(_0x111b86&&!_0x104095[_0x1c3ac7(0x1ad)]){let _0x543f50=![];for(const _0x363ffc of _0x3ac030){const _0x2108e3=detectModeFromSql(_0x363ffc),_0x8352c6=_0x363ffc[_0x1c3ac7(0x1b4)]?await getDbName(_0x104095[_0x1c3ac7(0x1be)],Number(_0x363ffc[_0x1c3ac7(0x1b4)]))[_0x1c3ac7(0x1b5)](()=>undefined):undefined,_0x32c30f=buildLocalSqlFileContent({'sqlCode':_0x363ffc[_0x1c3ac7(0x1ba)],'sqlName':_0x363ffc[_0x1c3ac7(0x1cd)],'dbId':_0x363ffc[_0x1c3ac7(0x1b4)]},ensureRemoteSqlContent(_0x363ffc),{'dbName':_0x8352c6,'mode':_0x2108e3,'syncedAt':new Date()[_0x1c3ac7(0x1c0)](),'description':_0x363ffc['description']}),_0x58d13e=resolveLocalSqlFilePath(_0x56e478,_0x363ffc['sqlCode'],buildSqlLockEntry(_0x363ffc,ensureRemoteSqlContent(_0x363ffc),'',{'dbName':_0x8352c6}));if(await fileExists(_0x58d13e)){const _0x58fb59=await readFile(_0x58d13e,_0x1c3ac7(0x1c9));if(!isEquivalentPulledSqlFile(_0x58fb59,_0x32c30f,_0x2108e3)){_0x543f50=!![];break;}}}if(_0x543f50){const _0x25d120=await confirmForceOverwrite('Force\x20pull\x20will\x20overwrite\x20local\x20SQL\x20that\x20differs\x20from\x20remote.');if(!_0x25d120)throw CliErrors['cancelled']('Force\x20pull\x20cancelled.');}}const _0x46b70a=cloneSqlLockData(_0x5761bd),_0x4fea68=_0x46b70a[_0x1c3ac7(0x1ca)][_0x56e478['appCode']],_0x1d3369=[],_0x25b6fd=[];for(const _0x323a3f of _0x3ac030){const _0x2cc7fc=_0x4fea68['sqls'][_0x323a3f['sqlCode']],_0xe77c97=ensureRemoteSqlContent(_0x323a3f),_0x121822=detectModeFromSql(_0x323a3f),_0x4bfd0a=_0x323a3f['dbId']?await getDbName(_0x104095[_0x1c3ac7(0x1be)],Number(_0x323a3f[_0x1c3ac7(0x1b4)]))[_0x1c3ac7(0x1b5)](()=>undefined):undefined,_0x32b93f=buildLocalSqlFileContent({'sqlCode':_0x323a3f[_0x1c3ac7(0x1ba)],'sqlName':_0x323a3f[_0x1c3ac7(0x1cd)],'dbId':_0x323a3f['dbId']},_0xe77c97,{'dbName':_0x4bfd0a,'mode':_0x121822,'syncedAt':new Date()[_0x1c3ac7(0x1c0)](),'description':_0x323a3f[_0x1c3ac7(0x1a5)]}),_0xcaa440=buildSqlLockEntry(_0x323a3f,_0xe77c97,computeSqlContentHash(_0x32b93f),{'dbName':_0x4bfd0a}),_0x32c795=_0xcaa440[_0x1c3ac7(0x1d2)],_0x5bafd7=join(_0x56e478[_0x1c3ac7(0x1bb)],_0x32c795);try{if(await fileExists(_0x5bafd7)){const _0x623b9b=await readFile(_0x5bafd7,_0x1c3ac7(0x1c9));if(isEquivalentPulledSqlFile(_0x623b9b,_0x32b93f,_0x121822)){_0x25b6fd[_0x1c3ac7(0x1b8)]({'sqlCode':_0x323a3f[_0x1c3ac7(0x1ba)],'reason':'unchanged'}),_0x4fea68[_0x1c3ac7(0x1c7)][_0x323a3f[_0x1c3ac7(0x1ba)]]={..._0xcaa440,'hash':computeSqlContentHash(_0x623b9b),'path':_0x32c795};continue;}if(!_0x111b86){_0x25b6fd[_0x1c3ac7(0x1b8)]({'sqlCode':_0x323a3f['sqlCode'],'reason':_0x1c3ac7(0x1c1)});continue;}}const _0x4c80fa=_0x2cc7fc?.['path']?join(_0x56e478[_0x1c3ac7(0x1bb)],_0x2cc7fc[_0x1c3ac7(0x1d2)]):undefined;_0x4c80fa&&_0x4c80fa!==_0x5bafd7&&await fileExists(_0x4c80fa)&&await rm(_0x4c80fa,{'force':!![]}),await ensureParentDirectory(_0x5bafd7),await writeFile(_0x5bafd7,_0x32b93f,_0x1c3ac7(0x1c9)),_0x4fea68[_0x1c3ac7(0x1c7)][_0x323a3f[_0x1c3ac7(0x1ba)]]={..._0xcaa440,'path':_0x32c795},_0x1d3369[_0x1c3ac7(0x1b8)]({'sqlCode':_0x323a3f[_0x1c3ac7(0x1ba)],'filePath':_0x5bafd7});}catch(_0x11209a){_0x26c34c[_0x1c3ac7(0x1b8)]({'sqlCode':_0x323a3f[_0x1c3ac7(0x1ba)],'error':_0x11209a instanceof Error?_0x11209a[_0x1c3ac7(0x1bd)]:String(_0x11209a)});}}return _0x4fea68[_0x1c3ac7(0x1d6)]=new Date()[_0x1c3ac7(0x1c0)](),await writeSqlLockFile(_0x56e478[_0x1c3ac7(0x1dc)],_0x46b70a),{'ok':_0x26c34c['length']===0x0,'data':{'pulled':_0x1d3369,'skipped':_0x25b6fd,'failed':_0x26c34c},'message':_0x1c3ac7(0x1dd)+_0x1d3369[_0x1c3ac7(0x1a9)]+_0x1c3ac7(0x1a4)+_0x25b6fd[_0x1c3ac7(0x1a9)]+_0x1c3ac7(0x1d5)+_0x26c34c[_0x1c3ac7(0x1a9)]+_0x1c3ac7(0x1c4)};}};function detectModeFromSql(_0x299204){const _0x41476b=a127_0xbf3202,_0x599cb1=ensureRemoteSqlContent(_0x299204),_0xa2d123=stripLocalSqlMetadata(_0x599cb1,_0x41476b(0x1ce))['trimStart']();if(/^<(select|insert|update|delete)\b/i[_0x41476b(0x1d0)](_0xa2d123))return _0x41476b(0x1ce);return'sql';}function isEquivalentPulledSqlFile(_0x4532ff,_0x20820b,_0x19f2fe){return normalizePullComparableContent(_0x4532ff,_0x19f2fe)===normalizePullComparableContent(_0x20820b,_0x19f2fe);}function normalizePullComparableContent(_0x1ff5fc,_0x51b106){const _0x34232e=a127_0xbf3202,_0x1d5b21=_0x1ff5fc['replace'](/\r\n/g,'\x0a')[_0x34232e(0x1b0)]('\x0a'),_0xf25979=_0x1d5b21['filter'](_0x485d2e=>!isSyncedAtMetadataLine(_0x485d2e,_0x51b106));return _0xf25979[_0x34232e(0x1bf)]('\x0a');}function isSyncedAtMetadataLine(_0x1b04f6,_0x4b8fd0){const _0xed801f=a127_0xbf3202;if(_0x4b8fd0===_0xed801f(0x1ce))return/^\s*<!--\s*@lovrabet\.syncedAt:/[_0xed801f(0x1d0)](_0x1b04f6);return/^\s*--\s*@lovrabet\.syncedAt:/[_0xed801f(0x1d0)](_0x1b04f6);}
|
package/lib/commands/sql/push.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const a127_0x45e623=a127_0x194a;(function(_0x6c5eee,_0x55e6c4){const _0x46a9bf=a127_0x194a,_0x578648=_0x6c5eee();while(!![]){try{const _0x10e893=parseInt(_0x46a9bf(0x14b))/0x1*(parseInt(_0x46a9bf(0x14e))/0x2)+-parseInt(_0x46a9bf(0x14d))/0x3+parseInt(_0x46a9bf(0x16e))/0x4*(parseInt(_0x46a9bf(0x15c))/0x5)+parseInt(_0x46a9bf(0x16d))/0x6+-parseInt(_0x46a9bf(0x182))/0x7*(parseInt(_0x46a9bf(0x17e))/0x8)+-parseInt(_0x46a9bf(0x176))/0x9*(-parseInt(_0x46a9bf(0x188))/0xa)+-parseInt(_0x46a9bf(0x177))/0xb;if(_0x10e893===_0x55e6c4)break;else _0x578648['push'](_0x578648['shift']());}catch(_0x2603ef){_0x578648['push'](_0x578648['shift']());}}}(a127_0x35d5,0xf23dc));import{mkdir,readFile,readdir,rename,rmdir}from'node:fs/promises';import{dirname,join,relative,resolve,sep}from'node:path';import{updateSqlQuery}from'../../core/api-client.js';import{loadSqlProjectConfig}from'../../core/sql-sync/config.js';import{getDbName,listDatabases}from'../../core/db-resolver.js';import{scanLocalSqlQueries}from'../../core/sql-sync/file-system.js';import{computeSqlFileHash}from'../../core/sql-sync/hash.js';function a127_0x194a(_0x1d41a6,_0x7bc708){_0x1d41a6=_0x1d41a6-0x14b;const _0x35d5a5=a127_0x35d5();let _0x194a46=_0x35d5a5[_0x1d41a6];return _0x194a46;}import{createEmptySqlLock,ensureSqlLockScope,readSqlLockFile,writeSqlLockFile}from'../../core/sql-sync/lock.js';function a127_0x35d5(){const _0x22de50=['bool','3rOQEzz','validation','150969fpJhGd','569614rbeZrF','force','replace','\x22\x20for\x20sqlCode\x20','utf8','relativePath','hash','Local\x20SQL\x20not\x20found:\x20','sql','startsWith','str','trashDir','dbName','filePath','447955ZrFLOb','dbId','POST','version','Would\x20push\x20','set','Push\x20local\x20SQL\x20files\x20to\x20remote','message','lockFilePath','projectRoot','isFinite','\x22\x20matches\x20multiple\x20databases\x20for\x20sqlCode\x20','exec','lastSync','remoteId','sqlcode','sqlRoot','6513576oJPAqS','24wiYycS','sqlName','push','path','length','\x20SQL\x20file(s)','appCode','unchanged','2770839TecZMZ','17529655wFXfyx','missing\x20remote\x20version;\x20run\x20`rabetbase\x20sql\x20pull`\x20to\x20refresh\x20version\x20info\x20first','\x20failed','No\x20local\x20SQL\x20files\x20found.','join','sqlCode','toISOString','597144aAzwxq','No\x20database\x20matches\x20local\x20directory\x20\x22','mode','sqls','14TRqkFJ','.\x20Keep\x20only\x20one\x20file\x20under\x20its\x20sqlCode\x20directory\x20before\x20pushing.','high-risk-write','get','Local\x20directory\x20\x22','catch','10nCXgdE'];a127_0x35d5=function(){return _0x22de50;};return a127_0x35d5();}import{fileExists}from'../../core/bff/file-system.js';import{CliErrors}from'../../errors.js';import{SQLCODE_FLAG_OPTIONAL}from'../../commands/common/flags.js';import{buildSqlLockEntry,stripLocalSqlMetadata}from'./shared.js';import{buildDbDirectoryName}from'../../core/sql-sync/utils.js';async function getTargetSqlQueries(_0x294912,_0x6dec53,_0xf4214f){const _0x5e086f=a127_0x194a,_0x508ff2=await scanLocalSqlQueries(_0x294912),_0x3bc5d1=new Map();for(const _0x41fa10 of _0x508ff2){if(_0xf4214f&&_0x41fa10[_0x5e086f(0x17c)]!==_0xf4214f)continue;const _0x153082=_0x3bc5d1[_0x5e086f(0x185)](_0x41fa10[_0x5e086f(0x17c)])??[];_0x153082[_0x5e086f(0x170)](_0x41fa10),_0x3bc5d1[_0x5e086f(0x161)](_0x41fa10['sqlCode'],_0x153082);}if(_0xf4214f&&!_0x3bc5d1['has'](_0xf4214f))throw CliErrors[_0x5e086f(0x14c)](_0x5e086f(0x155)+_0xf4214f);const _0x2f04e8=[];for(const [_0x159575,_0x2bf043]of _0x3bc5d1['entries']()){if(_0x2bf043[_0x5e086f(0x172)]===0x1){_0x2f04e8[_0x5e086f(0x170)](_0x2bf043[0x0]);continue;}const _0x97725a=_0x6dec53[_0x5e086f(0x181)][_0x159575],_0x4f4175=_0x97725a?.[_0x5e086f(0x171)],_0x88949d=_0x4f4175?_0x2bf043['filter'](_0x5a2a52=>_0x5a2a52[_0x5e086f(0x153)]!==_0x4f4175):_0x2bf043;if(_0x97725a&&_0x88949d[_0x5e086f(0x172)]===0x1){_0x2f04e8[_0x5e086f(0x170)](_0x88949d[0x0]);continue;}throw CliErrors[_0x5e086f(0x14c)]('Multiple\x20local\x20SQL\x20files\x20found\x20for\x20sqlCode\x20'+_0x159575+_0x5e086f(0x183));}return _0x2f04e8;}export const sqlPush={'service':a127_0x45e623(0x156),'command':a127_0x45e623(0x170),'description':a127_0x45e623(0x162),'risk':a127_0x45e623(0x184),'flags':[SQLCODE_FLAG_OPTIONAL,{'name':a127_0x45e623(0x14f),'type':'boolean','description':'Force\x20push\x20even\x20if\x20local\x20hash\x20matches\x20lock'}],async 'dryRun'(_0x45a4af){const _0x477995=a127_0x45e623,_0x38d256=loadSqlProjectConfig(_0x45a4af['appCode']),_0x36c9e5=await readSqlLockFile(_0x38d256[_0x477995(0x164)]),{appLock:_0x53a651}=ensureSqlLockScope(_0x36c9e5??createEmptySqlLock(),_0x45a4af[_0x477995(0x174)],_0x38d256[_0x477995(0x16c)],_0x477995(0x170)),_0x188bd6=await getTargetSqlQueries(_0x38d256,_0x53a651,_0x45a4af[_0x477995(0x158)](_0x477995(0x16b))||undefined),_0x380b7e=[];for(const _0x5a26ec of _0x188bd6){const _0x2caef3=await computeSqlFileHash(_0x5a26ec[_0x477995(0x15b)]),_0x1bf27f=_0x53a651[_0x477995(0x181)][_0x5a26ec[_0x477995(0x17c)]],_0x33020b=!!_0x1bf27f&&(_0x1bf27f[_0x477995(0x171)]!==_0x5a26ec[_0x477995(0x153)]||!!_0x5a26ec[_0x477995(0x16f)]&&_0x1bf27f['sqlName']!==_0x5a26ec[_0x477995(0x16f)]);if(!_0x45a4af[_0x477995(0x189)](_0x477995(0x14f))&&_0x1bf27f&&_0x1bf27f[_0x477995(0x154)]===_0x2caef3&&!_0x33020b)continue;_0x380b7e['push'](_0x5a26ec['sqlCode']);}return{'method':_0x477995(0x15e),'url':'/smartapi/custom/updateUserCustomSql','body':{'sqlCodes':_0x380b7e,'appCode':_0x45a4af['appCode']},'description':_0x477995(0x160)+_0x380b7e[_0x477995(0x172)]+_0x477995(0x173)};},async 'execute'(_0x21aad3){const _0xff53bc=a127_0x45e623,_0x4d62c6=loadSqlProjectConfig(_0x21aad3[_0xff53bc(0x174)]),_0x1de077=await readSqlLockFile(_0x4d62c6['lockFilePath']),{lockData:_0x2addfa,appLock:_0x545f47}=ensureSqlLockScope(_0x1de077??createEmptySqlLock(),_0x21aad3[_0xff53bc(0x174)],_0x4d62c6[_0xff53bc(0x16c)],_0xff53bc(0x170)),_0x3bb3fe=await getTargetSqlQueries(_0x4d62c6,_0x545f47,_0x21aad3['str'](_0xff53bc(0x16b))||undefined);if(_0x3bb3fe[_0xff53bc(0x172)]===0x0)return{'ok':!![],'data':{'pushed':[],'skipped':[],'failed':[]},'message':_0xff53bc(0x17a)};const _0x20c8f5=[],_0x3180ca=[],_0x5cc1bb=[];for(const _0x305c7e of _0x3bb3fe){const _0x3cda18=_0x545f47[_0xff53bc(0x181)][_0x305c7e[_0xff53bc(0x17c)]];if(!_0x3cda18){_0x5cc1bb['push']({'sqlCode':_0x305c7e[_0xff53bc(0x17c)],'error':'local\x20SQL\x20is\x20not\x20tracked\x20by\x20sql.lock.json;\x20use\x20`rabetbase\x20sql\x20create`\x20or\x20`rabetbase\x20sql\x20pull`\x20first'});continue;}try{const _0x3b6759=await computeSqlFileHash(_0x305c7e[_0xff53bc(0x15b)]),_0x17b598=_0x3cda18[_0xff53bc(0x171)]!==_0x305c7e['relativePath']||!!_0x305c7e['sqlName']&&_0x3cda18[_0xff53bc(0x16f)]!==_0x305c7e[_0xff53bc(0x16f)];if(!_0x21aad3[_0xff53bc(0x189)](_0xff53bc(0x14f))&&_0x3cda18[_0xff53bc(0x154)]===_0x3b6759&&!_0x17b598){_0x3180ca[_0xff53bc(0x170)]({'sqlCode':_0x305c7e['sqlCode'],'reason':_0xff53bc(0x175)});continue;}if(_0x3cda18[_0xff53bc(0x15f)]==null){_0x5cc1bb[_0xff53bc(0x170)]({'sqlCode':_0x305c7e[_0xff53bc(0x17c)],'error':_0xff53bc(0x178)});continue;}const _0x11379b=await readFile(_0x305c7e['filePath'],_0xff53bc(0x152)),_0x46e47d=stripLocalSqlMetadata(_0x11379b,_0x305c7e['mode']),_0x2cd7d3=_0x305c7e[_0xff53bc(0x16f)]||_0x3cda18[_0xff53bc(0x16f)],_0x11c489=await resolveTargetDbBinding(_0x21aad3[_0xff53bc(0x174)],_0x305c7e,_0x3cda18),_0x15d3ed=await updateSqlQuery({'id':_0x3cda18[_0xff53bc(0x16a)],'appCode':_0x21aad3[_0xff53bc(0x174)],'sqlCode':_0x305c7e[_0xff53bc(0x17c)],'sqlName':_0x2cd7d3,'dbId':_0x11c489[_0xff53bc(0x15d)],'version':_0x3cda18[_0xff53bc(0x15f)],'sqlContent':_0x46e47d,'sqlConfig':_0x3cda18['sqlConfig']??undefined}),_0x4d035f=_0x15d3ed[_0xff53bc(0x15d)]?await getDbName(_0x21aad3['appCode'],Number(_0x15d3ed[_0xff53bc(0x15d)]))['catch'](()=>_0x11c489[_0xff53bc(0x15a)]):_0x11c489[_0xff53bc(0x15a)];_0x545f47[_0xff53bc(0x181)][_0x305c7e[_0xff53bc(0x17c)]]={...buildSqlLockEntry(_0x15d3ed,_0x46e47d,_0x3b6759,{'dbName':_0x4d035f}),'path':_0x305c7e[_0xff53bc(0x153)],'mode':_0x3cda18[_0xff53bc(0x180)]},await archivePreviousSqlFileIfNeeded(_0x4d62c6,_0x3cda18[_0xff53bc(0x171)],_0x305c7e[_0xff53bc(0x153)]),_0x20c8f5[_0xff53bc(0x170)]({'sqlCode':_0x305c7e[_0xff53bc(0x17c)],'remoteId':_0x3cda18[_0xff53bc(0x16a)]});}catch(_0xadc084){_0x5cc1bb[_0xff53bc(0x170)]({'sqlCode':_0x305c7e[_0xff53bc(0x17c)],'error':_0xadc084 instanceof Error?_0xadc084[_0xff53bc(0x163)]:String(_0xadc084)});}}return _0x545f47[_0xff53bc(0x169)]=new Date()['toISOString'](),await writeSqlLockFile(_0x4d62c6[_0xff53bc(0x164)],_0x2addfa),{'ok':_0x5cc1bb[_0xff53bc(0x172)]===0x0,'data':{'pushed':_0x20c8f5,'skipped':_0x3180ca,'failed':_0x5cc1bb},'message':'Push\x20complete:\x20'+_0x20c8f5['length']+'\x20pushed,\x20'+_0x3180ca['length']+'\x20skipped,\x20'+_0x5cc1bb[_0xff53bc(0x172)]+_0xff53bc(0x179)};}};async function archivePreviousSqlFileIfNeeded(_0xa3c8de,_0x58da82,_0x3a2ec5){const _0x355efa=a127_0x45e623;if(!_0x58da82||_0x58da82===_0x3a2ec5)return;const _0x2fadf3=join(_0xa3c8de['sqlRootDir'],_0x58da82);if(!await fileExists(_0x2fadf3))return;const _0x599fe9=await moveToTrash(_0xa3c8de[_0x355efa(0x165)],_0xa3c8de[_0x355efa(0x159)],_0x2fadf3);await cleanupEmptyDirectories(dirname(_0x2fadf3),_0xa3c8de['sqlRootDir']),void _0x599fe9;}async function moveToTrash(_0x44b41f,_0x3eb2a5,_0x388d80){const _0x2300a7=a127_0x45e623,_0x200810=new Date()[_0x2300a7(0x17d)]()[_0x2300a7(0x150)](/[:.]/g,'-'),_0x17e072=relative(_0x44b41f,_0x388d80),_0x47cf77=join(_0x3eb2a5,_0x200810,_0x17e072);return await mkdir(dirname(_0x47cf77),{'recursive':!![]}),await rename(_0x388d80,_0x47cf77),_0x47cf77;}async function cleanupEmptyDirectories(_0x50b5cd,_0x2c0839){const _0x517da2=a127_0x45e623;let _0x1cea91=resolve(_0x50b5cd);const _0x50f55f=resolve(_0x2c0839);while(_0x1cea91[_0x517da2(0x157)](''+_0x50f55f+sep)||_0x1cea91===_0x50f55f){if(_0x1cea91===_0x50f55f)return;try{const _0x4fd056=await readdir(_0x1cea91);if(_0x4fd056[_0x517da2(0x172)]>0x0)return;await rmdir(_0x1cea91);}catch{return;}_0x1cea91=dirname(_0x1cea91);}}async function resolveTargetDbBinding(_0x4c3259,_0x5eeb23,_0xa8fdd7){const _0xe55fb6=a127_0x45e623,_0x40164b=_0x5eeb23['dbDirectory'];if(!_0x40164b)return{'dbId':_0xa8fdd7[_0xe55fb6(0x15d)],'dbName':_0xa8fdd7[_0xe55fb6(0x15a)]};const _0x5ee973=buildDbDirectoryName(_0xa8fdd7[_0xe55fb6(0x15a)],_0xa8fdd7[_0xe55fb6(0x15d)]);if(_0x40164b===_0x5ee973)return{'dbId':_0xa8fdd7['dbId'],'dbName':_0xa8fdd7[_0xe55fb6(0x15a)]};const _0x5ded95=parseExplicitDbDirectory(_0x40164b);if(_0x5ded95!=null)return{'dbId':_0x5ded95,'dbName':await getDbName(_0x4c3259,_0x5ded95)[_0xe55fb6(0x187)](()=>undefined)};const _0x37b06a=await listDatabases(_0x4c3259),_0x2e1da8=_0x37b06a['filter'](_0x1fc648=>buildDbDirectoryName(_0x1fc648['dbName'],_0x1fc648[_0xe55fb6(0x15d)])===_0x40164b);if(_0x2e1da8['length']===0x1)return{'dbId':_0x2e1da8[0x0][_0xe55fb6(0x15d)],'dbName':_0x2e1da8[0x0][_0xe55fb6(0x15a)]};if(_0x2e1da8[_0xe55fb6(0x172)]===0x0)throw CliErrors[_0xe55fb6(0x14c)](_0xe55fb6(0x17f)+_0x40164b+_0xe55fb6(0x151)+_0x5eeb23[_0xe55fb6(0x17c)]+'.');const _0x1e1f97=_0x2e1da8['map'](_0x2dadda=>_0x2dadda[_0xe55fb6(0x15a)]+'\x20('+_0x2dadda[_0xe55fb6(0x15d)]+')')[_0xe55fb6(0x17b)](',\x20');throw CliErrors[_0xe55fb6(0x14c)](_0xe55fb6(0x186)+_0x40164b+_0xe55fb6(0x167)+_0x5eeb23['sqlCode']+':\x20'+_0x1e1f97);}function parseExplicitDbDirectory(_0x3b5a4e){const _0x4fd89b=a127_0x45e623,_0x4c4e56=/^db-(\d+)$/[_0x4fd89b(0x168)](_0x3b5a4e);if(!_0x4c4e56)return null;const _0x470060=Number(_0x4c4e56[0x1]);return Number[_0x4fd89b(0x166)](_0x470060)&&_0x470060>0x0?_0x470060:null;}
|
|
1
|
+
const a128_0x4c1091=a128_0x41bd;(function(_0x2ef8da,_0xf68c20){const _0x5919c5=a128_0x41bd,_0x5932c1=_0x2ef8da();while(!![]){try{const _0x11f70c=parseInt(_0x5919c5(0xbd))/0x1*(parseInt(_0x5919c5(0xa9))/0x2)+-parseInt(_0x5919c5(0x90))/0x3*(parseInt(_0x5919c5(0xae))/0x4)+-parseInt(_0x5919c5(0x91))/0x5*(-parseInt(_0x5919c5(0x80))/0x6)+-parseInt(_0x5919c5(0xaf))/0x7*(parseInt(_0x5919c5(0x84))/0x8)+parseInt(_0x5919c5(0x86))/0x9+-parseInt(_0x5919c5(0xa3))/0xa*(parseInt(_0x5919c5(0xa5))/0xb)+-parseInt(_0x5919c5(0x9a))/0xc;if(_0x11f70c===_0xf68c20)break;else _0x5932c1['push'](_0x5932c1['shift']());}catch(_0x2fe085){_0x5932c1['push'](_0x5932c1['shift']());}}}(a128_0x19f3,0xf3b43));import{mkdir,readFile,readdir,rename,rmdir}from'node:fs/promises';import{dirname,join,relative,resolve,sep}from'node:path';import{updateSqlQuery}from'../../core/api-client.js';function a128_0x41bd(_0x4268db,_0x1f2906){_0x4268db=_0x4268db-0x7e;const _0x19f355=a128_0x19f3();let _0x41bd3a=_0x19f355[_0x4268db];return _0x41bd3a;}import{loadSqlProjectConfig}from'../../core/sql-sync/config.js';import{getDbName,listDatabases}from'../../core/db-resolver.js';import{scanLocalSqlQueries}from'../../core/sql-sync/file-system.js';import{computeSqlFileHash}from'../../core/sql-sync/hash.js';import{createEmptySqlLock,ensureSqlLockScope,readSqlLockFile,writeSqlLockFile}from'../../core/sql-sync/lock.js';import{fileExists}from'../../core/bff/file-system.js';import{CliErrors}from'../../errors.js';import{SQLCODE_FLAG_OPTIONAL}from'../../commands/common/flags.js';import{buildSqlLockEntry,stripLocalSqlMetadata}from'./shared.js';import{buildDbDirectoryName}from'../../core/sql-sync/utils.js';async function getTargetSqlQueries(_0x40475e,_0x356ddc,_0x1ae532){const _0x12257a=a128_0x41bd,_0x248dba=await scanLocalSqlQueries(_0x40475e),_0x30355a=new Map();for(const _0x2d490c of _0x248dba){if(_0x1ae532&&_0x2d490c['sqlCode']!==_0x1ae532)continue;const _0x1cd10b=_0x30355a[_0x12257a(0x95)](_0x2d490c[_0x12257a(0xa7)])??[];_0x1cd10b[_0x12257a(0xbe)](_0x2d490c),_0x30355a[_0x12257a(0x8a)](_0x2d490c[_0x12257a(0xa7)],_0x1cd10b);}if(_0x1ae532&&!_0x30355a['has'](_0x1ae532))throw CliErrors[_0x12257a(0x93)](_0x12257a(0xa0)+_0x1ae532);const _0x1de9b8=[];for(const [_0x11f4e5,_0x473681]of _0x30355a[_0x12257a(0x88)]()){if(_0x473681[_0x12257a(0x9c)]===0x1){_0x1de9b8[_0x12257a(0xbe)](_0x473681[0x0]);continue;}const _0x333cd6=_0x356ddc[_0x12257a(0xa6)][_0x11f4e5],_0x1a3718=_0x333cd6?.[_0x12257a(0x96)],_0x27c8a7=_0x1a3718?_0x473681[_0x12257a(0xa2)](_0x5bb51e=>_0x5bb51e[_0x12257a(0x92)]!==_0x1a3718):_0x473681;if(_0x333cd6&&_0x27c8a7['length']===0x1){_0x1de9b8[_0x12257a(0xbe)](_0x27c8a7[0x0]);continue;}throw CliErrors[_0x12257a(0x93)](_0x12257a(0xad)+_0x11f4e5+'.\x20Keep\x20only\x20one\x20file\x20under\x20its\x20sqlCode\x20directory\x20before\x20pushing.');}return _0x1de9b8;}export const sqlPush={'service':'sql','command':a128_0x4c1091(0xbe),'description':a128_0x4c1091(0xba),'risk':'high-risk-write','flags':[SQLCODE_FLAG_OPTIONAL,{'name':a128_0x4c1091(0x9e),'type':a128_0x4c1091(0xac),'description':a128_0x4c1091(0x82)}],async 'dryRun'(_0x1f774f){const _0x447947=a128_0x4c1091,_0x1a36ca=loadSqlProjectConfig(_0x1f774f[_0x447947(0x94)]),_0x156337=await readSqlLockFile(_0x1a36ca[_0x447947(0xb0)]),{appLock:_0x4d4a84}=ensureSqlLockScope(_0x156337??createEmptySqlLock(),_0x1f774f[_0x447947(0x94)],_0x1a36ca[_0x447947(0x8b)],'push'),_0x23a835=await getTargetSqlQueries(_0x1a36ca,_0x4d4a84,_0x1f774f['str'](_0x447947(0x85))||undefined),_0x17a591=[];for(const _0x4ee276 of _0x23a835){const _0x1e85f6=await computeSqlFileHash(_0x4ee276[_0x447947(0x97)]),_0x27e6e3=_0x4d4a84[_0x447947(0xa6)][_0x4ee276[_0x447947(0xa7)]],_0x5b37c3=!!_0x27e6e3&&(_0x27e6e3[_0x447947(0x96)]!==_0x4ee276[_0x447947(0x92)]||!!_0x4ee276['sqlName']&&_0x27e6e3['sqlName']!==_0x4ee276[_0x447947(0xbf)]);if(!_0x1f774f['bool']('force')&&_0x27e6e3&&_0x27e6e3[_0x447947(0xaa)]===_0x1e85f6&&!_0x5b37c3)continue;_0x17a591['push'](_0x4ee276[_0x447947(0xa7)]);}return{'method':_0x447947(0x9f),'url':_0x447947(0xb3),'body':{'sqlCodes':_0x17a591,'appCode':_0x1f774f[_0x447947(0x94)]},'description':_0x447947(0x8f)+_0x17a591[_0x447947(0x9c)]+_0x447947(0x87)};},async 'execute'(_0x1e26f1){const _0x5ba83e=a128_0x4c1091,_0x383d61=loadSqlProjectConfig(_0x1e26f1['appCode']),_0x246162=await readSqlLockFile(_0x383d61['lockFilePath']),{lockData:_0x482409,appLock:_0x52f659}=ensureSqlLockScope(_0x246162??createEmptySqlLock(),_0x1e26f1['appCode'],_0x383d61['sqlRoot'],'push'),_0x5cfea2=await getTargetSqlQueries(_0x383d61,_0x52f659,_0x1e26f1[_0x5ba83e(0x9b)](_0x5ba83e(0x85))||undefined);if(_0x5cfea2[_0x5ba83e(0x9c)]===0x0)return{'ok':!![],'data':{'pushed':[],'skipped':[],'failed':[]},'message':_0x5ba83e(0x8e)};const _0x3c7c64=[],_0x380bbb=[],_0x19ca07=[];for(const _0x4a6ad2 of _0x5cfea2){const _0x1802b0=_0x52f659[_0x5ba83e(0xa6)][_0x4a6ad2[_0x5ba83e(0xa7)]];if(!_0x1802b0){_0x19ca07[_0x5ba83e(0xbe)]({'sqlCode':_0x4a6ad2[_0x5ba83e(0xa7)],'error':_0x5ba83e(0x98)});continue;}try{const _0xab269e=await computeSqlFileHash(_0x4a6ad2[_0x5ba83e(0x97)]),_0x1b329a=_0x1802b0['path']!==_0x4a6ad2['relativePath']||!!_0x4a6ad2[_0x5ba83e(0xbf)]&&_0x1802b0[_0x5ba83e(0xbf)]!==_0x4a6ad2[_0x5ba83e(0xbf)];if(!_0x1e26f1[_0x5ba83e(0x7e)]('force')&&_0x1802b0[_0x5ba83e(0xaa)]===_0xab269e&&!_0x1b329a){_0x380bbb['push']({'sqlCode':_0x4a6ad2[_0x5ba83e(0xa7)],'reason':_0x5ba83e(0xb8)});continue;}if(_0x1802b0[_0x5ba83e(0xa4)]==null){_0x19ca07[_0x5ba83e(0xbe)]({'sqlCode':_0x4a6ad2[_0x5ba83e(0xa7)],'error':_0x5ba83e(0xbc)});continue;}const _0x1a1fde=await readFile(_0x4a6ad2[_0x5ba83e(0x97)],_0x5ba83e(0xb4)),_0x2e30ea=stripLocalSqlMetadata(_0x1a1fde,_0x4a6ad2['mode']),_0x360578=_0x4a6ad2['sqlName']||_0x1802b0[_0x5ba83e(0xbf)],_0x41bc79=await resolveTargetDbBinding(_0x1e26f1[_0x5ba83e(0x94)],_0x4a6ad2,_0x1802b0),_0x500d77=await updateSqlQuery({'id':_0x1802b0['remoteId'],'appCode':_0x1e26f1[_0x5ba83e(0x94)],'sqlCode':_0x4a6ad2[_0x5ba83e(0xa7)],'sqlName':_0x360578,'dbId':_0x41bc79['dbId'],'version':_0x1802b0[_0x5ba83e(0xa4)],'sqlContent':_0x2e30ea,'sqlConfig':_0x1802b0['sqlConfig']??undefined}),_0x531180=_0x500d77[_0x5ba83e(0xab)]?await getDbName(_0x1e26f1[_0x5ba83e(0x94)],Number(_0x500d77[_0x5ba83e(0xab)]))[_0x5ba83e(0xb1)](()=>_0x41bc79[_0x5ba83e(0x8c)]):_0x41bc79[_0x5ba83e(0x8c)];_0x52f659['sqls'][_0x4a6ad2[_0x5ba83e(0xa7)]]={...buildSqlLockEntry(_0x500d77,_0x2e30ea,_0xab269e,{'dbName':_0x531180}),'path':_0x4a6ad2[_0x5ba83e(0x92)],'mode':_0x1802b0['mode']},await archivePreviousSqlFileIfNeeded(_0x383d61,_0x1802b0[_0x5ba83e(0x96)],_0x4a6ad2[_0x5ba83e(0x92)]),_0x3c7c64[_0x5ba83e(0xbe)]({'sqlCode':_0x4a6ad2[_0x5ba83e(0xa7)],'remoteId':_0x1802b0['remoteId']});}catch(_0x2bed37){_0x19ca07['push']({'sqlCode':_0x4a6ad2['sqlCode'],'error':_0x2bed37 instanceof Error?_0x2bed37['message']:String(_0x2bed37)});}}return _0x52f659[_0x5ba83e(0x81)]=new Date()[_0x5ba83e(0x89)](),await writeSqlLockFile(_0x383d61[_0x5ba83e(0xb0)],_0x482409),{'ok':_0x19ca07[_0x5ba83e(0x9c)]===0x0,'data':{'pushed':_0x3c7c64,'skipped':_0x380bbb,'failed':_0x19ca07},'message':'Push\x20complete:\x20'+_0x3c7c64[_0x5ba83e(0x9c)]+_0x5ba83e(0x7f)+_0x380bbb[_0x5ba83e(0x9c)]+_0x5ba83e(0x9d)+_0x19ca07[_0x5ba83e(0x9c)]+_0x5ba83e(0xb6)};}};async function archivePreviousSqlFileIfNeeded(_0x23e9c2,_0x1daef6,_0x2750c2){const _0x32c450=a128_0x4c1091;if(!_0x1daef6||_0x1daef6===_0x2750c2)return;const _0x166b60=join(_0x23e9c2[_0x32c450(0xbb)],_0x1daef6);if(!await fileExists(_0x166b60))return;const _0x3354a6=await moveToTrash(_0x23e9c2[_0x32c450(0xb2)],_0x23e9c2[_0x32c450(0xb5)],_0x166b60);await cleanupEmptyDirectories(dirname(_0x166b60),_0x23e9c2[_0x32c450(0xbb)]),void _0x3354a6;}async function moveToTrash(_0xf5877c,_0x39ef81,_0x5a8116){const _0x419acc=a128_0x4c1091,_0x23502c=new Date()[_0x419acc(0x89)]()[_0x419acc(0x83)](/[:.]/g,'-'),_0x4d99a5=relative(_0xf5877c,_0x5a8116),_0x31d7c8=join(_0x39ef81,_0x23502c,_0x4d99a5);return await mkdir(dirname(_0x31d7c8),{'recursive':!![]}),await rename(_0x5a8116,_0x31d7c8),_0x31d7c8;}function a128_0x19f3(){const _0x310026=['join','unchanged','startsWith','Push\x20local\x20SQL\x20files\x20to\x20remote','sqlRootDir','missing\x20remote\x20version;\x20run\x20`rabetbase\x20sql\x20pull`\x20to\x20refresh\x20version\x20info\x20first','792763oaUNzX','push','sqlName','bool','\x20pushed,\x20','9765114ReOjLV','lastSync','Force\x20push\x20even\x20if\x20local\x20hash\x20matches\x20lock','replace','10352cfVkfS','sqlcode','3464874xNupPi','\x20SQL\x20file(s)','entries','toISOString','set','sqlRoot','dbName','map','No\x20local\x20SQL\x20files\x20found.','Would\x20push\x20','181623zWohhN','5hLVhqs','relativePath','validation','appCode','get','path','filePath','local\x20SQL\x20is\x20not\x20tracked\x20by\x20sql.lock.json;\x20use\x20`rabetbase\x20sql\x20create`\x20or\x20`rabetbase\x20sql\x20pull`\x20first','\x22\x20for\x20sqlCode\x20','196536KGrCxc','str','length','\x20skipped,\x20','force','POST','Local\x20SQL\x20not\x20found:\x20','Local\x20directory\x20\x22','filter','262970FhFFJB','version','616hLezoq','sqls','sqlCode','isFinite','2qpLGJV','hash','dbId','boolean','Multiple\x20local\x20SQL\x20files\x20found\x20for\x20sqlCode\x20','4HIBWgm','1393uNuABt','lockFilePath','catch','projectRoot','/smartapi/custom/updateUserCustomSql','utf8','trashDir','\x20failed'];a128_0x19f3=function(){return _0x310026;};return a128_0x19f3();}async function cleanupEmptyDirectories(_0x307e80,_0x3a57cd){const _0x8f56b0=a128_0x4c1091;let _0x3f6611=resolve(_0x307e80);const _0x10c6c5=resolve(_0x3a57cd);while(_0x3f6611[_0x8f56b0(0xb9)](''+_0x10c6c5+sep)||_0x3f6611===_0x10c6c5){if(_0x3f6611===_0x10c6c5)return;try{const _0x2b5dca=await readdir(_0x3f6611);if(_0x2b5dca['length']>0x0)return;await rmdir(_0x3f6611);}catch{return;}_0x3f6611=dirname(_0x3f6611);}}async function resolveTargetDbBinding(_0x42307c,_0x3d0312,_0x324375){const _0x5a9d3d=a128_0x4c1091,_0x45339a=_0x3d0312['dbDirectory'];if(!_0x45339a)return{'dbId':_0x324375[_0x5a9d3d(0xab)],'dbName':_0x324375[_0x5a9d3d(0x8c)]};const _0x590ffd=buildDbDirectoryName(_0x324375[_0x5a9d3d(0x8c)],_0x324375[_0x5a9d3d(0xab)]);if(_0x45339a===_0x590ffd)return{'dbId':_0x324375[_0x5a9d3d(0xab)],'dbName':_0x324375[_0x5a9d3d(0x8c)]};const _0xc9cbba=parseExplicitDbDirectory(_0x45339a);if(_0xc9cbba!=null)return{'dbId':_0xc9cbba,'dbName':await getDbName(_0x42307c,_0xc9cbba)[_0x5a9d3d(0xb1)](()=>undefined)};const _0x5adf05=await listDatabases(_0x42307c),_0x8eb7ec=_0x5adf05['filter'](_0x40cb8d=>buildDbDirectoryName(_0x40cb8d[_0x5a9d3d(0x8c)],_0x40cb8d[_0x5a9d3d(0xab)])===_0x45339a);if(_0x8eb7ec[_0x5a9d3d(0x9c)]===0x1)return{'dbId':_0x8eb7ec[0x0][_0x5a9d3d(0xab)],'dbName':_0x8eb7ec[0x0][_0x5a9d3d(0x8c)]};if(_0x8eb7ec[_0x5a9d3d(0x9c)]===0x0)throw CliErrors[_0x5a9d3d(0x93)]('No\x20database\x20matches\x20local\x20directory\x20\x22'+_0x45339a+_0x5a9d3d(0x99)+_0x3d0312[_0x5a9d3d(0xa7)]+'.');const _0x512980=_0x8eb7ec[_0x5a9d3d(0x8d)](_0x21b5b8=>_0x21b5b8[_0x5a9d3d(0x8c)]+'\x20('+_0x21b5b8[_0x5a9d3d(0xab)]+')')[_0x5a9d3d(0xb7)](',\x20');throw CliErrors[_0x5a9d3d(0x93)](_0x5a9d3d(0xa1)+_0x45339a+'\x22\x20matches\x20multiple\x20databases\x20for\x20sqlCode\x20'+_0x3d0312['sqlCode']+':\x20'+_0x512980);}function parseExplicitDbDirectory(_0xf00b02){const _0x12b3ec=a128_0x4c1091,_0x5933ca=/^db-(\d+)$/['exec'](_0xf00b02);if(!_0x5933ca)return null;const _0x5135e2=Number(_0x5933ca[0x1]);return Number[_0x12b3ec(0xa8)](_0x5135e2)&&_0x5135e2>0x0?_0x5135e2:null;}
|
package/lib/commands/sql/save.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a129_0x570a58=a129_0x2635;(function(_0x5445f5,_0xd8d55a){const _0x56a097=a129_0x2635,_0x59ace4=_0x5445f5();while(!![]){try{const _0x11d7a7=parseInt(_0x56a097(0x126))/0x1+-parseInt(_0x56a097(0x129))/0x2+parseInt(_0x56a097(0x120))/0x3+parseInt(_0x56a097(0x131))/0x4+-parseInt(_0x56a097(0x125))/0x5+parseInt(_0x56a097(0x121))/0x6*(parseInt(_0x56a097(0x132))/0x7)+-parseInt(_0x56a097(0x122))/0x8;if(_0x11d7a7===_0xd8d55a)break;else _0x59ace4['push'](_0x59ace4['shift']());}catch(_0x38fd4f){_0x59ace4['push'](_0x59ace4['shift']());}}}(a129_0x4ccb,0xd47c9));import{CliErrors}from'../../errors.js';import{SQLCODE_FLAG_OPTIONAL}from'../../commands/common/flags.js';const SQL_SAVE_DEPRECATED_HINT=[a129_0x570a58(0x12c),a129_0x570a58(0x124),a129_0x570a58(0x12b)]['join']('\x0a');function a129_0x2635(_0x129b1d,_0x1100e5){_0x129b1d=_0x129b1d-0x11e;const _0x4ccbfd=a129_0x4ccb();let _0x263501=_0x4ccbfd[_0x129b1d];return _0x263501;}function a129_0x4ccb(){const _0x173ae6=['SQL\x20query\x20display\x20name','2536366XBgeHh','sqlname','Update\x20existing\x20SQL\x20by\x20editing\x20the\x20synced\x20file\x20under\x20`.rabetbase/sql/<appCode>/<dbName|db-<id>>/`\x20and\x20then\x20running\x20`rabetbase\x20sql\x20push\x20--sqlcode\x20<code>\x20--yes`.','`rabetbase\x20sql\x20save`\x20has\x20been\x20deprecated.','Query\x20description','Target\x20database\x20—\x20accepts\x20a\x20numeric\x20ID\x20or\x20database\x20name\x20(e.g.\x20ecommerce_db)','Deprecated:\x20use\x20sql\x20create\x20to\x20create\x20and\x20sql\x20push\x20to\x20update','sql','2819304JyBEzA','7RvvhyK','string','Path\x20to\x20the\x20SQL\x20file','save','4238718iSVLhy','5892006pmqDYt','12107312srnnqg','description','Create\x20new\x20SQL\x20with\x20`rabetbase\x20sql\x20create\x20--name\x20<name>\x20--db-id\x20<id>\x20--mode\x20sql|mybatisXml`.','4019005VHQcUS','1356010JvvwYs','write'];a129_0x4ccb=function(){return _0x173ae6;};return a129_0x4ccb();}export const sqlSave={'service':a129_0x570a58(0x130),'command':a129_0x570a58(0x11f),'description':a129_0x570a58(0x12f),'risk':a129_0x570a58(0x127),'requiresAuth':![],'requiresAppCode':![],'flags':[{'name':'file','type':a129_0x570a58(0x133),'required':!![],'description':a129_0x570a58(0x11e)},SQLCODE_FLAG_OPTIONAL,{'name':a129_0x570a58(0x12a),'type':a129_0x570a58(0x133),'description':a129_0x570a58(0x128)},{'name':'db','type':a129_0x570a58(0x133),'description':a129_0x570a58(0x12e)},{'name':a129_0x570a58(0x123),'type':a129_0x570a58(0x133),'description':a129_0x570a58(0x12d)}],async 'validate'(){throw CliErrors['validation'](SQL_SAVE_DEPRECATED_HINT);},async 'execute'(){throw CliErrors['validation'](SQL_SAVE_DEPRECATED_HINT);}};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a130_0x44e0cf=a130_0x5b7b;function a130_0x5b7b(_0x2b3e5a,_0x27fdfd){_0x2b3e5a=_0x2b3e5a-0x105;const _0x41fd60=a130_0x41fd();let _0x5b7b7d=_0x41fd60[_0x2b3e5a];return _0x5b7b7d;}(function(_0x44ab42,_0x58a255){const _0x3d6d9c=a130_0x5b7b,_0x178d31=_0x44ab42();while(!![]){try{const _0x42b474=parseInt(_0x3d6d9c(0x120))/0x1+-parseInt(_0x3d6d9c(0x119))/0x2*(parseInt(_0x3d6d9c(0x12a))/0x3)+parseInt(_0x3d6d9c(0x10b))/0x4*(-parseInt(_0x3d6d9c(0x105))/0x5)+parseInt(_0x3d6d9c(0x12e))/0x6*(parseInt(_0x3d6d9c(0x116))/0x7)+parseInt(_0x3d6d9c(0x109))/0x8+-parseInt(_0x3d6d9c(0x113))/0x9+parseInt(_0x3d6d9c(0x118))/0xa*(parseInt(_0x3d6d9c(0x127))/0xb);if(_0x42b474===_0x58a255)break;else _0x178d31['push'](_0x178d31['shift']());}catch(_0x24453d){_0x178d31['push'](_0x178d31['shift']());}}}(a130_0x41fd,0xbe5f1));import{createInterface}from'node:readline';import{join}from'node:path';import{buildDefaultSqlFileName,buildSqlRelativePath,detectSqlMode}from'../../core/sql-sync/utils.js';export const SQL_LOCAL_REL_DIR=a130_0x44e0cf(0x11d);export function buildSqlLockEntry(_0xf63823,_0x11ba27,_0x1a14c8,_0xa876f8){const _0x2e7962=a130_0x44e0cf,_0x525d84=detectSqlMode(_0x11ba27);return{'path':buildSqlRelativePath(_0xf63823[_0x2e7962(0x10c)],_0xf63823[_0x2e7962(0x129)],_0xa876f8?.[_0x2e7962(0x10a)],_0x525d84,_0xf63823[_0x2e7962(0x117)]),'hash':_0x1a14c8,'remoteId':_0xf63823['id'],'version':_0xf63823['version'],'dbId':Number(_0xf63823[_0x2e7962(0x117)]),'dbName':_0xa876f8?.[_0x2e7962(0x10a)],'sqlName':_0xf63823[_0x2e7962(0x129)],'sqlConfig':_0xf63823[_0x2e7962(0x12d)]??undefined,'mode':_0x525d84};}function a130_0x41fd(){const _0x37f978=['sqlConfig','12708NqYylr','path','stdin','close','trimStart','test','toLowerCase','77045ibCurj','yes','sqlContent','replace','11253352sATHui','dbName','272mDDboV','sqlCode','entries','lastSync','question','trim','push','mode','4046346Diywea','map','description','3871lBoGkG','dbId','20QbgKBn','173732ypsgjv','fromEntries','--\x20@lovrabet.','\x20-->','.rabetbase/sql','sqlRoot','join','31774rPNNFi','\x20[y/N]\x20','mybatisXml','stderr','syncedAt','apps','length','4382004JeucIp','includes','sqlName','39AuWxRd','sqls','split'];a130_0x41fd=function(){return _0x37f978;};return a130_0x41fd();}export function cloneSqlLockData(_0x18b6f3){const _0x4b9d98=a130_0x44e0cf;return{'apps':Object[_0x4b9d98(0x11a)](Object[_0x4b9d98(0x10d)](_0x18b6f3[_0x4b9d98(0x125)])[_0x4b9d98(0x114)](([_0x20e1d9,_0x6f7629])=>[_0x20e1d9,{'sqlRoot':_0x6f7629[_0x4b9d98(0x11e)],'lastSync':_0x6f7629[_0x4b9d98(0x10e)],'sqls':{..._0x6f7629[_0x4b9d98(0x12b)]}}]))};}export function ensureRemoteSqlContent(_0x441127){const _0x2cee4c=a130_0x44e0cf;return _0x441127[_0x2cee4c(0x107)]??'';}export function buildLocalSqlFileContent(_0x85dede,_0x2bc45b,_0x65300d){const _0x327ad=a130_0x44e0cf,_0x1d800d=_0x65300d?.['mode']??detectSqlMode(_0x2bc45b),_0x50f5be=stripLocalSqlMetadata(_0x2bc45b,_0x1d800d)[_0x327ad(0x110)](),_0x250313=[...buildMetadataHeaderLines({'sqlCode':_0x85dede[_0x327ad(0x10c)],'sqlName':_0x85dede['sqlName'],'dbId':_0x85dede['dbId'],'dbName':_0x65300d?.[_0x327ad(0x10a)],'mode':_0x1d800d,'syncedAt':_0x65300d?.[_0x327ad(0x124)],'description':_0x65300d?.[_0x327ad(0x115)]},_0x1d800d),'',_0x50f5be],_0x22dfb6=_0x250313[_0x327ad(0x11f)]('\x0a');return _0x22dfb6['endsWith']('\x0a')?_0x22dfb6:_0x22dfb6+'\x0a';}export function stripLocalSqlMetadata(_0x576358,_0x1df689){const _0x3d2601=a130_0x44e0cf,_0x3f8fb6=_0x576358[_0x3d2601(0x108)](/\r\n/g,'\x0a')[_0x3d2601(0x12c)]('\x0a'),_0x1b176e=[];let _0x289be5=0x0;if(_0x1df689===_0x3d2601(0x122))while(_0x289be5<_0x3f8fb6[_0x3d2601(0x126)]){const _0x298864=_0x3f8fb6[_0x289be5]??'';if(/^\s*<!--\s*@lovrabet\./[_0x3d2601(0x133)](_0x298864)){_0x289be5++;continue;}if(_0x298864['trim']()===''&&_0x289be5>0x0){_0x289be5++;continue;}break;}else while(_0x289be5<_0x3f8fb6[_0x3d2601(0x126)]){const _0x43ad00=_0x3f8fb6[_0x289be5]??'';if(/^\s*--\s*@lovrabet\./['test'](_0x43ad00)){_0x289be5++;continue;}if(_0x43ad00[_0x3d2601(0x110)]()===''&&_0x289be5>0x0){_0x289be5++;continue;}break;}for(;_0x289be5<_0x3f8fb6[_0x3d2601(0x126)];_0x289be5++){_0x1b176e[_0x3d2601(0x111)](_0x3f8fb6[_0x289be5]);}return _0x1b176e[_0x3d2601(0x11f)]('\x0a')[_0x3d2601(0x132)]();}export function resolveSqlMode(_0x289238,_0x100884){const _0x1a756a=a130_0x44e0cf;if(_0x100884?.[_0x1a756a(0x112)])return _0x100884['mode'];return detectSqlMode(_0x289238);}export function resolveSqlFileName(_0x1ed50c,_0x1d75f8,_0x374a40){const _0x49e291=a130_0x44e0cf;if(_0x374a40?.[_0x49e291(0x12f)])return _0x374a40[_0x49e291(0x12f)];if(_0x374a40?.[_0x49e291(0x129)]||_0x374a40?.[_0x49e291(0x10a)])return buildSqlRelativePath(_0x1ed50c,_0x374a40?.[_0x49e291(0x129)],_0x374a40?.[_0x49e291(0x10a)],resolveSqlMode(_0x1d75f8,_0x374a40),_0x374a40?.['dbId']);return buildDefaultSqlFileName(_0x1ed50c,resolveSqlMode(_0x1d75f8,_0x374a40));}export function resolveSqlLocalDir(_0x932ebd,_0x3f25f3){return join(_0x932ebd,SQL_LOCAL_REL_DIR,_0x3f25f3);}export async function confirmForceOverwrite(_0x3851f7){const _0x990972=a130_0x44e0cf,_0x500631=createInterface({'input':process[_0x990972(0x130)],'output':process[_0x990972(0x123)]}),_0x3aa1db=await new Promise(_0x532182=>{const _0x1753ba=_0x990972;_0x500631[_0x1753ba(0x10f)](_0x3851f7+_0x1753ba(0x121),_0x532182);});return _0x500631[_0x990972(0x131)](),['y',_0x990972(0x106)][_0x990972(0x128)](_0x3aa1db[_0x990972(0x110)]()[_0x990972(0x134)]());}export function findSqlLockScope(_0x565b75,_0x37a382){return _0x565b75['apps'][_0x37a382];}function buildMetadataHeaderLines(_0x4a548d,_0x23fcf4){const _0x10882a=a130_0x44e0cf,_0x5c9350=[[_0x10882a(0x10c),_0x4a548d[_0x10882a(0x10c)]],[_0x10882a(0x129),_0x4a548d[_0x10882a(0x129)]],['dbId',_0x4a548d[_0x10882a(0x117)]],['dbName',_0x4a548d[_0x10882a(0x10a)]],[_0x10882a(0x112),_0x4a548d[_0x10882a(0x112)]],['syncedAt',_0x4a548d[_0x10882a(0x124)]],[_0x10882a(0x115),_0x4a548d[_0x10882a(0x115)]]];if(_0x23fcf4===_0x10882a(0x122))return _0x5c9350['filter'](([,_0x1fd514])=>_0x1fd514!==undefined&&_0x1fd514!==null&&String(_0x1fd514)['trim']()!=='')[_0x10882a(0x114)](([_0x1298f4,_0x590c27])=>'<!--\x20@lovrabet.'+_0x1298f4+':\x20'+String(_0x590c27)+_0x10882a(0x11c));return _0x5c9350['filter'](([,_0x47b695])=>_0x47b695!==undefined&&_0x47b695!==null&&String(_0x47b695)[_0x10882a(0x110)]()!=='')[_0x10882a(0x114)](([_0x457d61,_0x2cfb76])=>_0x10882a(0x11b)+_0x457d61+':\x20'+String(_0x2cfb76));}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
function a131_0x35c0(_0x4986aa,_0xdd254a){_0x4986aa=_0x4986aa-0x15f;const _0x208ed7=a131_0x208e();let _0x35c042=_0x208ed7[_0x4986aa];return _0x35c042;}const a131_0x604dab=a131_0x35c0;(function(_0x4a8722,_0x3c4445){const _0xe3821d=a131_0x35c0,_0x58ccfa=_0x4a8722();while(!![]){try{const _0x474a6e=-parseInt(_0xe3821d(0x183))/0x1+-parseInt(_0xe3821d(0x16e))/0x2+-parseInt(_0xe3821d(0x174))/0x3*(parseInt(_0xe3821d(0x169))/0x4)+parseInt(_0xe3821d(0x161))/0x5+-parseInt(_0xe3821d(0x17c))/0x6*(parseInt(_0xe3821d(0x17a))/0x7)+parseInt(_0xe3821d(0x16d))/0x8*(parseInt(_0xe3821d(0x17f))/0x9)+parseInt(_0xe3821d(0x16c))/0xa;if(_0x474a6e===_0x3c4445)break;else _0x58ccfa['push'](_0x58ccfa['shift']());}catch(_0x196929){_0x58ccfa['push'](_0x58ccfa['shift']());}}}(a131_0x208e,0x42929));import{listSqlQueries}from'../../core/api-client.js';import{loadSqlProjectConfig}from'../../core/sql-sync/config.js';import{scanLocalSqlQueries}from'../../core/sql-sync/file-system.js';import{computeSqlFileHash}from'../../core/sql-sync/hash.js';import{createEmptySqlLock,ensureSqlLockScope,readSqlLockFile}from'../../core/sql-sync/lock.js';const PAGE_SIZE=0x64;async function fetchAllSqlCodes(_0x2e77c6){const _0xf48e56=a131_0x35c0,_0x1fb95f=[];let _0x31c038=0x1;while(!![]){const _0x469f86=await listSqlQueries(_0x2e77c6,{'currentPage':_0x31c038,'pageSize':PAGE_SIZE}),_0x3058aa=_0x469f86[_0xf48e56(0x184)]??[];_0x1fb95f[_0xf48e56(0x180)](..._0x3058aa[_0xf48e56(0x15f)](_0x131351=>_0x131351[_0xf48e56(0x17d)]));if(_0x3058aa[_0xf48e56(0x16a)]===0x0)break;const _0x2dc552=_0x469f86['paging']?.[_0xf48e56(0x170)];if(_0x2dc552!=null?_0x1fb95f['length']>=_0x2dc552:_0x3058aa[_0xf48e56(0x16a)]<PAGE_SIZE)break;_0x31c038++;}return _0x1fb95f;}export const sqlStatus={'service':'sql','command':a131_0x604dab(0x175),'description':a131_0x604dab(0x17e),'risk':a131_0x604dab(0x177),'flags':[{'name':a131_0x604dab(0x17b),'type':a131_0x604dab(0x181),'description':a131_0x604dab(0x165)}],async 'execute'(_0x226f4d){const _0x4f874d=a131_0x604dab,_0x2b45cc=loadSqlProjectConfig(_0x226f4d[_0x4f874d(0x182)]),_0x53e594=await readSqlLockFile(_0x2b45cc[_0x4f874d(0x168)]),{appLock:_0x55968b}=ensureSqlLockScope(_0x53e594??createEmptySqlLock(),_0x2b45cc[_0x4f874d(0x182)],_0x2b45cc[_0x4f874d(0x179)],'status'),_0x22d9f7=await scanLocalSqlQueries(_0x2b45cc),_0x3b3c24=[],_0x282962=[],_0x33188e=[],_0x183167=[],_0x1fb6c9=new Set(_0x22d9f7[_0x4f874d(0x15f)](_0x44e7dd=>_0x44e7dd[_0x4f874d(0x16b)]));for(const _0x36bd73 of _0x22d9f7){const _0x8a8993=await computeSqlFileHash(_0x36bd73[_0x4f874d(0x171)]),_0x5ae2d4=_0x55968b[_0x4f874d(0x162)][_0x36bd73[_0x4f874d(0x16b)]],_0x4a7031=!!_0x5ae2d4&&_0x5ae2d4[_0x4f874d(0x167)]!==_0x36bd73[_0x4f874d(0x164)],_0x3caaf4=!!_0x5ae2d4&&!!_0x36bd73[_0x4f874d(0x176)]&&_0x5ae2d4[_0x4f874d(0x176)]!==_0x36bd73['sqlName'];if(!_0x5ae2d4)_0x3b3c24[_0x4f874d(0x180)](_0x36bd73['lockKey']);else _0x5ae2d4[_0x4f874d(0x172)]!==_0x8a8993||_0x4a7031||_0x3caaf4?_0x282962[_0x4f874d(0x180)](_0x36bd73['lockKey']):_0x33188e['push'](_0x36bd73[_0x4f874d(0x16b)]);}for(const _0x5e40a9 of Object[_0x4f874d(0x163)](_0x55968b[_0x4f874d(0x162)])){!_0x1fb6c9[_0x4f874d(0x166)](_0x5e40a9)&&_0x183167[_0x4f874d(0x180)](_0x5e40a9);}const _0x5e62d5=[];if(_0x226f4d[_0x4f874d(0x16f)]('remote')){const _0x156989=await fetchAllSqlCodes(_0x226f4d[_0x4f874d(0x182)]);for(const _0x5c22b8 of _0x156989){!_0x1fb6c9[_0x4f874d(0x166)](_0x5c22b8)&&!_0x55968b[_0x4f874d(0x162)][_0x5c22b8]&&_0x5e62d5[_0x4f874d(0x180)](_0x5c22b8);}}const _0x39a897=_0x3b3c24[_0x4f874d(0x16a)]===0x0&&_0x282962[_0x4f874d(0x16a)]===0x0&&_0x183167[_0x4f874d(0x16a)]===0x0&&_0x5e62d5['length']===0x0;return{'ok':!![],'data':{'added':_0x3b3c24,'modified':_0x282962,'missing':_0x183167,'unchanged':_0x33188e,'remoteOnly':_0x5e62d5},'message':_0x39a897?_0x4f874d(0x178):_0x3b3c24[_0x4f874d(0x16a)]+_0x4f874d(0x160)+_0x282962[_0x4f874d(0x16a)]+_0x4f874d(0x173)+_0x183167[_0x4f874d(0x16a)]+'\x20missing,\x20'+_0x33188e['length']+'\x20unchanged'+(_0x5e62d5[_0x4f874d(0x16a)]>0x0?',\x20'+_0x5e62d5['length']+'\x20remote-only':'')};}};function a131_0x208e(){const _0x361746=['\x20modified,\x20','225FPYLFv','status','sqlName','read','All\x20SQL\x20queries\x20are\x20in\x20sync.','sqlRoot','2008489iostjA','remote','6bnjHQT','sqlCode','Check\x20local\x20SQL\x20sync\x20status\x20against\x20lock\x20file','502974RmiTvl','push','boolean','appCode','51946erjVIR','tableData','map','\x20added,\x20','1263865jDbEss','sqls','keys','relativePath','Also\x20check\x20for\x20remote-only\x20SQL\x20queries\x20not\x20present\x20locally','has','path','lockFilePath','708UnwDdw','length','lockKey','6187290lbWOLt','24UJgJDT','828662JMzeeo','bool','totalCount','filePath','hash'];a131_0x208e=function(){return _0x361746;};return a131_0x208e();}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const
|
|
1
|
+
const a132_0x2b57ee=a132_0x5511;(function(_0x1a36f7,_0xe6018b){const _0x318800=a132_0x5511,_0x25bd19=_0x1a36f7();while(!![]){try{const _0x3f2754=-parseInt(_0x318800(0x127))/0x1*(-parseInt(_0x318800(0x12d))/0x2)+parseInt(_0x318800(0x113))/0x3*(parseInt(_0x318800(0x126))/0x4)+-parseInt(_0x318800(0x139))/0x5*(parseInt(_0x318800(0x125))/0x6)+parseInt(_0x318800(0x115))/0x7*(parseInt(_0x318800(0x110))/0x8)+-parseInt(_0x318800(0x11c))/0x9*(parseInt(_0x318800(0x114))/0xa)+-parseInt(_0x318800(0x112))/0xb*(parseInt(_0x318800(0x132))/0xc)+-parseInt(_0x318800(0x133))/0xd;if(_0x3f2754===_0xe6018b)break;else _0x25bd19['push'](_0x25bd19['shift']());}catch(_0x121dcc){_0x25bd19['push'](_0x25bd19['shift']());}}}(a132_0xddf4,0x5c32b));import{readFileSync,existsSync}from'node:fs';function a132_0x5511(_0x471eaf,_0x12df2f){_0x471eaf=_0x471eaf-0x10e;const _0xddf4a6=a132_0xddf4();let _0x5511a7=_0xddf4a6[_0x471eaf];return _0x5511a7;}import{resolve}from'node:path';import{validateSql}from'../../core/sql-validator.js';import{getDatasetDetail,listDatasets}from'../../core/api-client.js';import{CliErrors}from'../../errors.js';function a132_0xddf4(){const _0x10a496=['isSelectOnly','5llfKvK','schemas','validate','string','isArray','get','message','792ZjjRqV','map','385737SJhbtI','3SqchCj','10IfMEsl','35826mIUqFr','file','SQL\x20schema\x20validation','length','type','schema:','str','1872441ZzlkYE','valid','sqlType','read','validation','name','Path\x20to\x20the\x20SQL\x20file\x20to\x20validate','Provide\x20--file\x20or\x20--sql','reason','1085304oMPNFR','1710404MOswYU','148639NZCbcq','tables','from','Inline\x20SQL\x20content\x20to\x20validate\x20(alternative\x20to\x20--file)','cwd','Validate\x20SQL\x20content\x20without\x20saving\x20(type\x20detection,\x20parameter\x20extraction,\x20optional\x20schema\x20check)','10UnXmBG','Comma-separated\x20dataset\x20codes\x20to\x20cross-check\x20table/column\x20names\x20against','size','tableName','toLowerCase','72USLzBV','9106500VFsWBg','dbtableConfig','utf-8','sql','fields'];a132_0xddf4=function(){return _0x10a496;};return a132_0xddf4();}import{assertDatasetIsDbTableBacked,filterDbTableBackedDatasets}from'../../commands/dataset/capability.js';export const sqlValidate={'service':a132_0x2b57ee(0x136),'command':a132_0x2b57ee(0x13b),'description':a132_0x2b57ee(0x12c),'risk':a132_0x2b57ee(0x11f),'flags':[{'name':a132_0x2b57ee(0x116),'type':a132_0x2b57ee(0x13c),'description':a132_0x2b57ee(0x122)},{'name':a132_0x2b57ee(0x136),'type':a132_0x2b57ee(0x13c),'description':a132_0x2b57ee(0x12a)},{'name':a132_0x2b57ee(0x13a),'type':'string','description':a132_0x2b57ee(0x12e)}],async 'execute'(_0x45ab3b){const _0x36a660=a132_0x2b57ee,_0x26ada7=_0x45ab3b[_0x36a660(0x11b)](_0x36a660(0x116)),_0x28c06a=_0x45ab3b[_0x36a660(0x11b)](_0x36a660(0x136));if(!_0x26ada7&&!_0x28c06a)throw CliErrors['flagMissing']('file',_0x36a660(0x123));let _0xcbb0e9;if(_0x26ada7){const _0xbeb0c=resolve(process[_0x36a660(0x12b)](),_0x26ada7);if(!existsSync(_0xbeb0c))throw CliErrors[_0x36a660(0x120)]('File\x20not\x20found:\x20'+_0xbeb0c);_0xcbb0e9=readFileSync(_0xbeb0c,_0x36a660(0x135));}else _0xcbb0e9=_0x28c06a;const _0x1d8582=validateSql(_0xcbb0e9),_0x1da968={'valid':_0x1d8582['valid'],'sqlType':_0x1d8582[_0x36a660(0x11e)][_0x36a660(0x119)],'isSelectOnly':_0x1d8582['sqlType'][_0x36a660(0x138)],'isDangerous':_0x1d8582[_0x36a660(0x11e)]['isDangerous'],'tables':_0x1d8582[_0x36a660(0x128)],'parameters':_0x1d8582['parameters'],'message':_0x1d8582['message']};_0x1d8582[_0x36a660(0x11e)][_0x36a660(0x124)]&&(_0x1da968[_0x36a660(0x124)]=_0x1d8582['sqlType']['reason']);const _0x13674b=_0x45ab3b[_0x36a660(0x11b)](_0x36a660(0x13a));if(_0x13674b&&_0x1d8582[_0x36a660(0x11d)]){const _0x4ca182=_0x13674b['split'](',')[_0x36a660(0x111)](_0x184f0e=>_0x184f0e['trim']())['filter'](Boolean),_0x486b8f=[],_0x5f2923=filterDbTableBackedDatasets(await listDatasets(_0x45ab3b['appCode'])),_0xd58e2d=new Map(_0x5f2923['map'](_0x112e89=>[_0x112e89[_0x36a660(0x134)]?.[_0x36a660(0x130)]?.[_0x36a660(0x131)](),_0x112e89]));for(const _0x1586c8 of _0x1d8582['tables']){const _0x32bdc6=_0xd58e2d[_0x36a660(0x10e)](_0x1586c8[_0x36a660(0x131)]());!_0x32bdc6&&_0x486b8f['push']('Table\x20\x22'+_0x1586c8+'\x22\x20not\x20found\x20in\x20any\x20dataset');}for(const _0x14fc48 of _0x4ca182){let _0x224ca4;try{_0x224ca4=await getDatasetDetail(_0x14fc48);}catch{_0x486b8f['push']('Dataset\x20\x22'+_0x14fc48+'\x22\x20not\x20found\x20or\x20not\x20accessible');continue;}assertDatasetIsDbTableBacked(_0x224ca4,_0x36a660(0x117));const _0x2a6b5d=Array[_0x36a660(0x13d)](_0x224ca4[_0x36a660(0x137)])?_0x224ca4[_0x36a660(0x137)]:[],_0x13c1a6=new Set(_0x2a6b5d[_0x36a660(0x111)](_0x57afba=>_0x57afba[_0x36a660(0x121)]?.['toLowerCase']())),_0x5f4fc9=_0x224ca4[_0x36a660(0x134)]?.[_0x36a660(0x130)]||_0x224ca4[_0x36a660(0x130)]||_0x14fc48;_0x1da968[_0x36a660(0x11a)+_0x5f4fc9]={'code':_0x14fc48,'tableName':_0x5f4fc9,'fieldCount':_0x13c1a6[_0x36a660(0x12f)],'fields':Array[_0x36a660(0x129)](_0x13c1a6)};}_0x486b8f[_0x36a660(0x118)]>0x0&&(_0x1da968['schemaWarnings']=_0x486b8f);}return{'ok':_0x1d8582['valid'],'data':_0x1da968,'message':_0x1d8582[_0x36a660(0x10f)]};}};
|