@lovrabet/rabetbase-cli 2.1.14-beta.3 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (209) hide show
  1. package/lib/api/api-doc.js +1 -1
  2. package/lib/api/fetch-model-list.js +1 -1
  3. package/lib/api/generate-api-file.js +1 -1
  4. package/lib/auth/auth-server-ui.js +1 -1
  5. package/lib/auth/auth-server.js +1 -1
  6. package/lib/auth/constant.js +1 -1
  7. package/lib/auth/get-cookie.js +1 -1
  8. package/lib/auth/get-session-user.js +1 -1
  9. package/lib/auth/is-session-valid.js +1 -1
  10. package/lib/auth/login-success-html.js +1 -1
  11. package/lib/auth/logout.js +1 -1
  12. package/lib/cli-flags.js +1 -1
  13. package/lib/cli.js +1 -1
  14. package/lib/commands/api/generate.js +1 -1
  15. package/lib/commands/api/index.js +1 -1
  16. package/lib/commands/api/list.js +1 -1
  17. package/lib/commands/api/pull.js +1 -1
  18. package/lib/commands/api/shared.js +1 -1
  19. package/lib/commands/app/add.js +1 -1
  20. package/lib/commands/app/discover.js +1 -1
  21. package/lib/commands/app/index.js +1 -1
  22. package/lib/commands/app/list.js +1 -1
  23. package/lib/commands/app/remove.js +1 -1
  24. package/lib/commands/app/shared.js +1 -1
  25. package/lib/commands/app/use.js +1 -1
  26. package/lib/commands/auth/index.js +1 -1
  27. package/lib/commands/bff/create.js +1 -1
  28. package/lib/commands/bff/delete.js +1 -1
  29. package/lib/commands/bff/detail.js +1 -1
  30. package/lib/commands/bff/index.js +1 -1
  31. package/lib/commands/bff/list.js +1 -1
  32. package/lib/commands/bff/pull.js +1 -1
  33. package/lib/commands/bff/push.js +1 -1
  34. package/lib/commands/bff/status.js +1 -1
  35. package/lib/commands/cli-update.js +1 -1
  36. package/lib/commands/codegen/index.js +1 -1
  37. package/lib/commands/codegen/sdk.js +1 -1
  38. package/lib/commands/codegen/sql.js +1 -1
  39. package/lib/commands/common/app-selector.js +1 -1
  40. package/lib/commands/common/flags.js +1 -1
  41. package/lib/commands/common/validate.js +1 -1
  42. package/lib/commands/config/get.js +1 -1
  43. package/lib/commands/config/index.js +1 -1
  44. package/lib/commands/config/list.js +1 -1
  45. package/lib/commands/config/set.js +1 -1
  46. package/lib/commands/config/shared.js +1 -1
  47. package/lib/commands/data/filter.js +1 -1
  48. package/lib/commands/data/getOne.js +1 -1
  49. package/lib/commands/data/index.js +1 -1
  50. package/lib/commands/data/shared.js +1 -1
  51. package/lib/commands/dataset/capability.js +1 -1
  52. package/lib/commands/dataset/delete.js +1 -1
  53. package/lib/commands/dataset/detail.js +1 -1
  54. package/lib/commands/dataset/extend-update.js +1 -1
  55. package/lib/commands/dataset/field-update.js +1 -1
  56. package/lib/commands/dataset/index.js +1 -1
  57. package/lib/commands/dataset/list.js +1 -1
  58. package/lib/commands/dataset/operations.js +1 -1
  59. package/lib/commands/dataset/relation-create.js +1 -0
  60. package/lib/commands/dataset/relation-delete.js +1 -0
  61. package/lib/commands/dataset/relation-shared.js +1 -0
  62. package/lib/commands/dataset/relation-update.js +1 -0
  63. package/lib/commands/dataset/relations.js +1 -0
  64. package/lib/commands/dataset/rename.js +1 -1
  65. package/lib/commands/db/analyze-cancel.js +1 -1
  66. package/lib/commands/db/analyze-start.js +1 -1
  67. package/lib/commands/db/analyze-status.js +1 -1
  68. package/lib/commands/db/create.js +1 -1
  69. package/lib/commands/db/delete.js +1 -1
  70. package/lib/commands/db/detail.js +1 -1
  71. package/lib/commands/db/diff.js +1 -1
  72. package/lib/commands/db/index.js +1 -1
  73. package/lib/commands/db/list.js +1 -1
  74. package/lib/commands/db/shared.js +1 -1
  75. package/lib/commands/db/tables.js +1 -1
  76. package/lib/commands/db/test.js +1 -1
  77. package/lib/commands/db/update.js +1 -1
  78. package/lib/commands/doctor.js +1 -1
  79. package/lib/commands/init/index.js +1 -1
  80. package/lib/commands/issue/index.js +1 -1
  81. package/lib/commands/issue/nudge.js +1 -1
  82. package/lib/commands/issue/report.js +1 -1
  83. package/lib/commands/issue/shared.js +1 -1
  84. package/lib/commands/logs/index.js +1 -1
  85. package/lib/commands/menu/index.js +1 -1
  86. package/lib/commands/menu/shared/compare-table.js +1 -1
  87. package/lib/commands/menu/shared/index.js +1 -1
  88. package/lib/commands/menu/shared/inquirer.js +1 -1
  89. package/lib/commands/menu/shared/local-pages.js +1 -1
  90. package/lib/commands/menu/shared/logic.js +1 -1
  91. package/lib/commands/menu/shared/service.js +1 -1
  92. package/lib/commands/menu/shared/sync-core.js +1 -1
  93. package/lib/commands/menu/shared/update-core.js +1 -1
  94. package/lib/commands/menu/shared/valid-url.js +1 -1
  95. package/lib/commands/menu/sync.js +1 -1
  96. package/lib/commands/menu/update.js +1 -1
  97. package/lib/commands/page/generate-start.js +1 -1
  98. package/lib/commands/page/generate-status.js +1 -1
  99. package/lib/commands/page/index.js +1 -1
  100. package/lib/commands/page/pull.js +1 -1
  101. package/lib/commands/page/push.js +1 -1
  102. package/lib/commands/page/relation-audit.js +1 -0
  103. package/lib/commands/page/shared.js +1 -1
  104. package/lib/commands/page/standard-page-status.js +1 -1
  105. package/lib/commands/page/sync.js +1 -1
  106. package/lib/commands/project/create/enhanced-guided-create.js +1 -1
  107. package/lib/commands/project/create/format-elapsed.js +1 -1
  108. package/lib/commands/project/create/main.js +1 -1
  109. package/lib/commands/project/create/non-interactive.js +1 -1
  110. package/lib/commands/project/create/project-template-path.js +1 -1
  111. package/lib/commands/project/create/use-copy-project-template.js +1 -1
  112. package/lib/commands/project/create/use-format-code.js +1 -1
  113. package/lib/commands/project/create/use-install-dependencies.js +1 -1
  114. package/lib/commands/project/index.js +1 -1
  115. package/lib/commands/project/init.js +1 -1
  116. package/lib/commands/project/upgrade.js +1 -1
  117. package/lib/commands/registry.js +1 -1
  118. package/lib/commands/run/index.js +1 -1
  119. package/lib/commands/schema.js +1 -1
  120. package/lib/commands/skill/index.js +1 -1
  121. package/lib/commands/sql/create.js +1 -1
  122. package/lib/commands/sql/delete.js +1 -1
  123. package/lib/commands/sql/detail.js +1 -1
  124. package/lib/commands/sql/exec.js +1 -1
  125. package/lib/commands/sql/index.js +1 -1
  126. package/lib/commands/sql/list.js +1 -1
  127. package/lib/commands/sql/pull.js +1 -1
  128. package/lib/commands/sql/push.js +1 -1
  129. package/lib/commands/sql/save.js +1 -1
  130. package/lib/commands/sql/shared.js +1 -1
  131. package/lib/commands/sql/status.js +1 -1
  132. package/lib/commands/sql/validate.js +1 -1
  133. package/lib/config/schema.js +1 -1
  134. package/lib/constant/cdn.js +1 -1
  135. package/lib/constant/cli.js +1 -1
  136. package/lib/constant/defaults.js +1 -1
  137. package/lib/constant/domain.js +1 -1
  138. package/lib/constant/env.js +1 -1
  139. package/lib/constant/output.js +1 -1
  140. package/lib/constant/paths.js +1 -1
  141. package/lib/constant/risk.js +1 -1
  142. package/lib/context.js +1 -1
  143. package/lib/core/alias-resolver.js +1 -1
  144. package/lib/core/api-client.js +1 -1
  145. package/lib/core/bff/config.js +1 -1
  146. package/lib/core/bff/file-system.js +1 -1
  147. package/lib/core/bff/hash.js +1 -1
  148. package/lib/core/bff/lock.js +1 -1
  149. package/lib/core/bff/utils.js +1 -1
  150. package/lib/core/db-resolver.js +1 -1
  151. package/lib/core/page/file-system.js +1 -1
  152. package/lib/core/page/hash.js +1 -1
  153. package/lib/core/page/lock.js +1 -1
  154. package/lib/core/sql-sync/config.js +1 -1
  155. package/lib/core/sql-sync/file-system.js +1 -1
  156. package/lib/core/sql-sync/hash.js +1 -1
  157. package/lib/core/sql-sync/lock.js +1 -1
  158. package/lib/core/sql-sync/utils.js +1 -1
  159. package/lib/core/sql-validator.js +1 -1
  160. package/lib/errors.js +1 -1
  161. package/lib/framework/build-all-flags.js +1 -1
  162. package/lib/framework/flags.js +1 -1
  163. package/lib/framework/help.js +1 -1
  164. package/lib/framework/index.js +1 -1
  165. package/lib/framework/output.js +1 -1
  166. package/lib/framework/response.js +1 -1
  167. package/lib/framework/runner-alias.js +1 -1
  168. package/lib/framework/runner.js +1 -1
  169. package/lib/framework/schema-export.js +1 -1
  170. package/lib/framework/types.js +1 -1
  171. package/lib/generated/build-info.js +1 -1
  172. package/lib/help.js +1 -1
  173. package/lib/skills/main.js +1 -1
  174. package/lib/skills/npx-skills-add.js +1 -1
  175. package/lib/telemetry/cli-command-trace.js +1 -1
  176. package/lib/telemetry/cli-help-trace.js +1 -1
  177. package/lib/telemetry/ensure-cli-otel-config.js +1 -1
  178. package/lib/telemetry/register-otel-exit-shutdown.js +1 -1
  179. package/lib/telemetry/send-cli-trace-log.js +1 -1
  180. package/lib/telemetry/send-platform-issue-collect-log.js +1 -1
  181. package/lib/utils/ai_config.js +1 -1
  182. package/lib/utils/apply-jq-filter.js +1 -1
  183. package/lib/utils/cdn-config.js +1 -1
  184. package/lib/utils/check-sdk-version.js +1 -1
  185. package/lib/utils/cli-version-check.js +1 -1
  186. package/lib/utils/cli-version-policy.js +1 -1
  187. package/lib/utils/config.js +1 -1
  188. package/lib/utils/copy-directory.js +1 -1
  189. package/lib/utils/entity-with-id.js +1 -1
  190. package/lib/utils/file-utils.js +1 -1
  191. package/lib/utils/guides-cdn.js +1 -1
  192. package/lib/utils/http-client.js +1 -1
  193. package/lib/utils/is-non-interactive.js +1 -1
  194. package/lib/utils/logger.js +1 -1
  195. package/lib/utils/params.js +1 -1
  196. package/lib/utils/platform.js +1 -1
  197. package/lib/utils/rules-cdn.js +1 -1
  198. package/lib/utils/sleep.js +1 -1
  199. package/lib/utils/template-replacer.js +1 -1
  200. package/lib/utils/update-notice.js +1 -0
  201. package/lib/utils/version.js +1 -1
  202. package/lib/utils/with-active-cookie.js +1 -1
  203. package/lib/utils/write-cli-side-channel.js +1 -1
  204. package/package.json +1 -1
  205. package/lib/commands/dataset/link-create.js +0 -1
  206. package/lib/commands/dataset/link-delete.js +0 -1
  207. package/lib/commands/dataset/link-shared.js +0 -1
  208. package/lib/commands/dataset/link-update.js +0 -1
  209. package/lib/commands/dataset/links.js +0 -1
@@ -1 +1 @@
1
- function a119_0x32f9(){const _0x34595f=['1920055cXneeZ','Check\x20network\x20connectivity\x20and\x20try\x20again.','222219FFhrIW','skill','pipe','../../skills/npx-skills-add.js','unknown','14aWvJdP','执行安装技能包命令(委托给\x20npx\x20skills\x20add\x20-g\x20-y)','log','4943144GPFYgK','info','inherit','4386712ZOypyB','lovrabet/rabetbase',')...','1187406DNIGXC','skill-install','cwd','Installing\x20official\x20skill\x20via\x20npx\x20(','120sAdjgB','skipped','1681854XukTTU','1616014pJiPkN','\x20skill\x20installed','3biYHZj','setLogPath','error'];a119_0x32f9=function(){return _0x34595f;};return a119_0x32f9();}const a119_0x32c718=a119_0x5726;function a119_0x5726(_0x5b7c6d,_0x361cde){_0x5b7c6d=_0x5b7c6d-0x1c4;const _0x32f9f0=a119_0x32f9();let _0x572667=_0x32f9f0[_0x5b7c6d];return _0x572667;}(function(_0x17ecac,_0x2b5ad6){const _0xabb369=a119_0x5726,_0x38dcb4=_0x17ecac();while(!![]){try{const _0x541a4f=parseInt(_0xabb369(0x1c7))/0x1+parseInt(_0xabb369(0x1ce))/0x2*(-parseInt(_0xabb369(0x1d0))/0x3)+parseInt(_0xabb369(0x1c4))/0x4+-parseInt(_0xabb369(0x1d3))/0x5+-parseInt(_0xabb369(0x1cd))/0x6*(parseInt(_0xabb369(0x1da))/0x7)+parseInt(_0xabb369(0x1dd))/0x8+parseInt(_0xabb369(0x1d5))/0x9*(-parseInt(_0xabb369(0x1cb))/0xa);if(_0x541a4f===_0x2b5ad6)break;else _0x38dcb4['push'](_0x38dcb4['shift']());}catch(_0x5ebaf5){_0x38dcb4['push'](_0x38dcb4['shift']());}}}(a119_0x32f9,0xd0439));import{CliErrors}from'../../errors.js';import{CLI_BIN_NAME}from'../../constant/cli.js';import{logger}from'../../utils/logger.js';import{NPX_SKILLS_ADD_GLOBAL_COMMAND_LINE}from'../../skills/npx-skills-add.js';export const skillDefinitions=[{'service':a119_0x32c718(0x1d6),'command':'install','description':'Install\x20developer\x20skill\x20package','risk':'write','requiresAuth':![],'requiresAppCode':![],'hasFormat':![],'flags':[],async 'execute'(_0x53e926){const _0x393540=a119_0x32c718;logger[_0x393540(0x1d1)](process[_0x393540(0x1c9)]()),logger[_0x393540(0x1de)](_0x393540(0x1c8),_0x393540(0x1db));const {runNpxSkillsAddGlobal:_0x12e48a}=await import(_0x393540(0x1d8)),_0x8a9fe3=_0x53e926['nonInteractive']?_0x393540(0x1d7):_0x393540(0x1df);console[_0x393540(0x1dc)](_0x393540(0x1ca)+NPX_SKILLS_ADD_GLOBAL_COMMAND_LINE+_0x393540(0x1c6));const _0x57faf0=_0x12e48a(process[_0x393540(0x1c9)](),_0x393540(0x1c5),{'stdio':_0x8a9fe3});if(_0x57faf0[_0x393540(0x1cc)])console['log']('Skipped\x20npx\x20(RABETBASE_SKIP_NPX_SKILLS=1);\x20assuming\x20skill\x20is\x20already\x20present.');else{if(_0x57faf0['ok'])console[_0x393540(0x1dc)](CLI_BIN_NAME+_0x393540(0x1cf));else throw CliErrors['apiError']('npx\x20skills\x20add\x20failed:\x20'+(_0x57faf0[_0x393540(0x1d2)]||_0x393540(0x1d9)),_0x393540(0x1d4));}return{'ok':!![]};}}];
1
+ const a120_0x4413c6=a120_0x3f3c;(function(_0x7d0033,_0x36bb54){const _0x31ea0b=a120_0x3f3c,_0x3600a7=_0x7d0033();while(!![]){try{const _0x2183f4=-parseInt(_0x31ea0b(0x114))/0x1+parseInt(_0x31ea0b(0x104))/0x2*(-parseInt(_0x31ea0b(0x107))/0x3)+parseInt(_0x31ea0b(0x105))/0x4*(parseInt(_0x31ea0b(0x10a))/0x5)+-parseInt(_0x31ea0b(0x119))/0x6*(-parseInt(_0x31ea0b(0x118))/0x7)+-parseInt(_0x31ea0b(0x10e))/0x8+parseInt(_0x31ea0b(0x100))/0x9*(-parseInt(_0x31ea0b(0x101))/0xa)+-parseInt(_0x31ea0b(0x117))/0xb*(-parseInt(_0x31ea0b(0x10d))/0xc);if(_0x2183f4===_0x36bb54)break;else _0x3600a7['push'](_0x3600a7['shift']());}catch(_0x5f25e4){_0x3600a7['push'](_0x3600a7['shift']());}}}(a120_0x4a4c,0x68223));import{CliErrors}from'../../errors.js';function a120_0x4a4c(){const _0x3c8302=['Check\x20network\x20connectivity\x20and\x20try\x20again.','cwd','522CoPuKc','590764ypjUIo','write','609ZWEzNZ','skill-install','error','10OHAowD',')...','Skipped\x20npx\x20(RABETBASE_SKIP_NPX_SKILLS=1);\x20assuming\x20skill\x20is\x20already\x20present.','12dDZSvy','6362168LQOxwB','npx\x20skills\x20add\x20failed:\x20','apiError','log','setLogPath','install','578333gaItEv','inherit','unknown','21004379ifXlGh','2586829hIKJvp','6cWCXAn','lovrabet/rabetbase','nonInteractive','Install\x20developer\x20skill\x20package','6491700lHrfyE','10xtPxuD'];a120_0x4a4c=function(){return _0x3c8302;};return a120_0x4a4c();}import{CLI_BIN_NAME}from'../../constant/cli.js';import{logger}from'../../utils/logger.js';import{NPX_SKILLS_ADD_GLOBAL_COMMAND_LINE}from'../../skills/npx-skills-add.js';function a120_0x3f3c(_0xbddf3f,_0x40376f){_0xbddf3f=_0xbddf3f-0x100;const _0x4a4ccc=a120_0x4a4c();let _0x3f3c86=_0x4a4ccc[_0xbddf3f];return _0x3f3c86;}export const skillDefinitions=[{'service':'skill','command':a120_0x4413c6(0x113),'description':a120_0x4413c6(0x11c),'risk':a120_0x4413c6(0x106),'requiresAuth':![],'requiresAppCode':![],'hasFormat':![],'flags':[],async 'execute'(_0x382b2a){const _0x270e28=a120_0x4413c6;logger[_0x270e28(0x112)](process[_0x270e28(0x103)]()),logger['info'](_0x270e28(0x108),'执行安装技能包命令(委托给\x20npx\x20skills\x20add\x20-g\x20-y)');const {runNpxSkillsAddGlobal:_0x3a6429}=await import('../../skills/npx-skills-add.js'),_0x568c2a=_0x382b2a[_0x270e28(0x11b)]?'pipe':_0x270e28(0x115);console[_0x270e28(0x111)]('Installing\x20official\x20skill\x20via\x20npx\x20('+NPX_SKILLS_ADD_GLOBAL_COMMAND_LINE+_0x270e28(0x10b));const _0x48503d=_0x3a6429(process[_0x270e28(0x103)](),_0x270e28(0x11a),{'stdio':_0x568c2a});if(_0x48503d['skipped'])console[_0x270e28(0x111)](_0x270e28(0x10c));else{if(_0x48503d['ok'])console[_0x270e28(0x111)](CLI_BIN_NAME+'\x20skill\x20installed');else throw CliErrors[_0x270e28(0x110)](_0x270e28(0x10f)+(_0x48503d[_0x270e28(0x109)]||_0x270e28(0x116)),_0x270e28(0x102));}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_0x2aa050=a121_0x1aec;(function(_0x3dc826,_0x1b5e85){const _0x64c523=a121_0x1aec,_0x1e60cd=_0x3dc826();while(!![]){try{const _0x5a4d34=parseInt(_0x64c523(0xd7))/0x1+-parseInt(_0x64c523(0xdc))/0x2*(parseInt(_0x64c523(0xdb))/0x3)+-parseInt(_0x64c523(0xe4))/0x4*(-parseInt(_0x64c523(0xec))/0x5)+-parseInt(_0x64c523(0xb6))/0x6*(parseInt(_0x64c523(0xbf))/0x7)+parseInt(_0x64c523(0xbb))/0x8*(parseInt(_0x64c523(0xc6))/0x9)+parseInt(_0x64c523(0xd3))/0xa+-parseInt(_0x64c523(0xd0))/0xb;if(_0x5a4d34===_0x1b5e85)break;else _0x1e60cd['push'](_0x1e60cd['shift']());}catch(_0x24200c){_0x1e60cd['push'](_0x1e60cd['shift']());}}}(a121_0x95c0,0x63b8a));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';function a121_0x95c0(){const _0x2f41ea=['flag','isFinite','1099773phkYuT','2JEnzYr','Target\x20database\x20ID','普通\x20SQL(sql)','dbName','string','</select>','--db-id\x20is\x20required\x20in\x20non-interactive\x20mode.','--name\x20is\x20required\x20in\x20non-interactive\x20mode.','4WDUlHi','请输入目标数据库\x20dbId:','File\x20already\x20exists:\x20','mode','<server-generated-sqlCode>','sqlCode','sqlRootDir','db-id','1946485uqBeek','sqls','toISOString','Invalid\x20database\x20selection\x20payload:\x20','name','✎\x20手动输入\x20dbId','validation','SQL\x20名称不能为空','flagMissing','join','dbId\x20必须为正整数','Local\x20SQL\x20file\x20mode','sqlRoot','dbId\x20不能为空','12bNcuDN','__manual__','stringify','Create\x20a\x20new\x20custom\x20SQL\x20and\x20scaffold\x20it\x20locally','description','4488600AEFhMv','Created\x20SQL\x20query\x20','create','length','58891LrScNp','mybatisXml','str','sqlName','appCode','catch','new','9YyiYkN','number','dbId','--mode\x20is\x20required\x20in\x20non-interactive\x20mode.','map','/smartapi/custom/saveUserCustomSql','nonInteractive','utf8','<select\x20id=\x22query\x22\x20resultType=\x22map\x22>','high-risk-write','8257733IBEEWj','\x20\x20SELECT\x201\x20AS\x20id','lockFilePath','5877710aUzlmc','trim','SELECT\x201\x20AS\x20id;','sql','4435oJQJrW','SQL\x20query\x20display\x20name'];a121_0x95c0=function(){return _0x2f41ea;};return a121_0x95c0();}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(_0x9223b){const _0x48f5fc=a121_0x1aec;if(_0x9223b===_0x48f5fc(0xc0))return[_0x48f5fc(0xce),_0x48f5fc(0xd1),_0x48f5fc(0xe1),'']['join']('\x0a');return[_0x48f5fc(0xd5),''][_0x48f5fc(0xb1)]('\x0a');}export const sqlCreate={'service':'sql','command':a121_0x2aa050(0xbd),'description':a121_0x2aa050(0xb9),'risk':a121_0x2aa050(0xcf),'flags':[{'name':'name','type':a121_0x2aa050(0xe0),'description':a121_0x2aa050(0xd8)},{'name':'db-id','type':a121_0x2aa050(0xc7),'description':a121_0x2aa050(0xdd)},{'name':a121_0x2aa050(0xe7),'type':a121_0x2aa050(0xe0),'enum':['sql',a121_0x2aa050(0xc0)],'description':a121_0x2aa050(0xb3)}],async 'validate'(_0x28c19f){const _0x3a7dfa=a121_0x2aa050;if(!_0x28c19f[_0x3a7dfa(0xcc)])return;if(!_0x28c19f[_0x3a7dfa(0xc1)](_0x3a7dfa(0xf0))['trim']())throw CliErrors['flagMissing'](_0x3a7dfa(0xf0),'--name\x20is\x20required\x20in\x20non-interactive\x20mode.');const _0x1f503c=resolveProvidedDbId(_0x28c19f);if(typeof _0x1f503c!==_0x3a7dfa(0xc7)||!Number[_0x3a7dfa(0xda)](_0x1f503c)||_0x1f503c<=0x0)throw CliErrors['flagMissing'](_0x3a7dfa(0xeb),_0x3a7dfa(0xe2));if(!_0x28c19f[_0x3a7dfa(0xc1)](_0x3a7dfa(0xe7))[_0x3a7dfa(0xd4)]())throw CliErrors[_0x3a7dfa(0xb0)]('mode',_0x3a7dfa(0xc9));},async 'dryRun'(_0x2372c4){const _0x4cdcaa=a121_0x2aa050,_0x5da64f=loadSqlProjectConfig(_0x2372c4[_0x4cdcaa(0xc3)]),{sqlName:_0x528fb3,dbId:_0x517ea6,dbName:_0x555920,mode:_0x348454}=await resolveSqlNewInputs(_0x2372c4),_0x5ad341=buildSqlRelativePath(_0x4cdcaa(0xe8),_0x528fb3,_0x555920,_0x348454,_0x517ea6),_0x1148fe=_0x5da64f[_0x4cdcaa(0xea)]+'/'+_0x5ad341;return{'method':'POST','url':_0x4cdcaa(0xcb),'body':{'appCode':_0x2372c4[_0x4cdcaa(0xc3)],'sqlName':_0x528fb3,'dbId':_0x517ea6,'mode':_0x348454,'localPath':_0x1148fe},'description':'Would\x20create\x20a\x20new\x20SQL\x20query\x20and\x20scaffold\x20it\x20under\x20'+_0x5da64f['sqlRootDir']};},async 'execute'(_0x593d46){const _0x392fb6=a121_0x2aa050,_0x3bbdae=loadSqlProjectConfig(_0x593d46[_0x392fb6(0xc3)]),{sqlName:_0xf2161c,dbId:_0x10abe5,dbName:_0x7b78c3,mode:_0x87e89d}=await resolveSqlNewInputs(_0x593d46),_0x550851=generateSqlTemplate(_0x87e89d),_0x104a1c=await createSqlQuery({'appCode':_0x593d46['appCode'],'sqlName':_0xf2161c,'dbId':_0x10abe5,'sqlContent':_0x550851}),_0xcd5959=ensureRemoteSqlContent(_0x104a1c),_0x3c5582=_0x7b78c3||await getDbName(_0x593d46['appCode'],_0x10abe5)[_0x392fb6(0xc4)](()=>undefined),_0x443cef=buildSqlRelativePath(_0x104a1c[_0x392fb6(0xe9)],_0x104a1c['sqlName'],_0x3c5582,_0x87e89d,_0x10abe5),_0x1450a1=_0x3bbdae[_0x392fb6(0xea)]+'/'+_0x443cef,_0x54acef=buildLocalSqlFileContent({'sqlCode':_0x104a1c[_0x392fb6(0xe9)],'sqlName':_0x104a1c[_0x392fb6(0xc2)],'dbId':_0x104a1c[_0x392fb6(0xc8)]},_0xcd5959,{'dbName':_0x3c5582,'mode':_0x87e89d,'syncedAt':new Date()[_0x392fb6(0xee)](),'description':_0x104a1c[_0x392fb6(0xba)]});if(await fileExists(_0x1450a1))throw CliErrors['validation'](_0x392fb6(0xe6)+_0x1450a1);await ensureParentDirectory(_0x1450a1),await writeFile(_0x1450a1,_0x54acef,_0x392fb6(0xcd));const _0x3d8985=await readSqlLockFile(_0x3bbdae[_0x392fb6(0xd2)]),{lockData:_0x1e3525,appLock:_0xaa74dd}=ensureSqlLockScope(_0x3d8985??createEmptySqlLock(),_0x3bbdae[_0x392fb6(0xc3)],_0x3bbdae[_0x392fb6(0xb4)],_0x392fb6(0xc5));return _0xaa74dd[_0x392fb6(0xed)][_0x104a1c[_0x392fb6(0xe9)]]={...buildSqlLockEntry(_0x104a1c,_0xcd5959,computeSqlContentHash(_0x54acef),{'dbName':_0x3c5582}),'path':_0x443cef,'mode':_0x87e89d},_0xaa74dd['lastSync']=new Date()[_0x392fb6(0xee)](),await writeSqlLockFile(_0x3bbdae[_0x392fb6(0xd2)],_0x1e3525),{'ok':!![],'data':{'id':_0x104a1c['id'],'sqlCode':_0x104a1c[_0x392fb6(0xe9)],'sqlName':_0x104a1c[_0x392fb6(0xc2)],'dbId':_0x104a1c[_0x392fb6(0xc8)],'path':_0x1450a1,'mode':_0x87e89d},'message':_0x392fb6(0xbc)+_0x104a1c[_0x392fb6(0xe9)]};}};async function resolveSqlNewInputs(_0x1fd0ae){const _0x4d92cc=await resolveSqlNameInput(_0x1fd0ae),{dbId:_0x532b2b,dbName:_0x4cdf31}=await resolveDbSelection(_0x1fd0ae),_0xbb689e=await resolveSqlModeInput(_0x1fd0ae);return{'sqlName':_0x4d92cc,'dbId':_0x532b2b,'dbName':_0x4cdf31,'mode':_0xbb689e};}async function resolveSqlNameInput(_0x26f49e){const _0x4d4ec6=a121_0x2aa050,_0x45ae38=_0x26f49e['str']('name')[_0x4d4ec6(0xd4)]();if(_0x45ae38)return _0x45ae38;if(_0x26f49e[_0x4d4ec6(0xcc)])throw CliErrors[_0x4d4ec6(0xb0)](_0x4d4ec6(0xf0),_0x4d4ec6(0xe3));return(await input({'message':'请输入\x20SQL\x20名称:','validate':_0x27006e=>_0x27006e[_0x4d4ec6(0xd4)]()?!![]:_0x4d4ec6(0xaf)}))[_0x4d4ec6(0xd4)]();}async function resolveDbSelection(_0x38ca3b){const _0x3332f8=a121_0x2aa050,_0x27b98b=resolveProvidedDbId(_0x38ca3b);if(typeof _0x27b98b===_0x3332f8(0xc7)&&Number[_0x3332f8(0xda)](_0x27b98b)&&_0x27b98b>0x0)return{'dbId':_0x27b98b,'dbName':await getDbName(_0x38ca3b[_0x3332f8(0xc3)],_0x27b98b)[_0x3332f8(0xc4)](()=>undefined)};if(_0x38ca3b[_0x3332f8(0xcc)])throw CliErrors[_0x3332f8(0xb0)]('db-id',_0x3332f8(0xe2));const _0xb938e6=await listDatabases(_0x38ca3b[_0x3332f8(0xc3)])[_0x3332f8(0xc4)](()=>[]);if(_0xb938e6['length']===0x1)return{'dbId':_0xb938e6[0x0][_0x3332f8(0xc8)],'dbName':_0xb938e6[0x0][_0x3332f8(0xdf)]};if(_0xb938e6[_0x3332f8(0xbe)]>0x1){const _0x309ae8=await select({'message':'请选择目标数据库:','choices':[..._0xb938e6[_0x3332f8(0xca)](_0x16823a=>({'name':_0x16823a['dbName']+'\x20('+_0x16823a[_0x3332f8(0xc8)]+')','value':serializeDbSelection(_0x16823a)})),{'name':_0x3332f8(0xad),'value':_0x3332f8(0xb7)}]});if(_0x309ae8!==_0x3332f8(0xb7))return deserializeDbSelection(_0x309ae8);}const _0x47a7d6=await input({'message':_0x3332f8(0xe5),'validate':_0x563fa1=>{const _0xfedd06=_0x3332f8,_0xcf398a=_0x563fa1[_0xfedd06(0xd4)]();if(!_0xcf398a)return _0xfedd06(0xb5);const _0x52e9e5=Number(_0xcf398a);if(!Number['isInteger'](_0x52e9e5)||_0x52e9e5<=0x0)return _0xfedd06(0xb2);return!![];}});return{'dbId':Number(_0x47a7d6['trim']())};}async function resolveSqlModeInput(_0x2442a1){const _0x256b1d=a121_0x2aa050,_0x3efa78=_0x2442a1[_0x256b1d(0xc1)](_0x256b1d(0xe7))[_0x256b1d(0xd4)]();if(_0x3efa78===_0x256b1d(0xd6)||_0x3efa78===_0x256b1d(0xc0))return _0x3efa78;if(_0x2442a1['nonInteractive'])throw CliErrors[_0x256b1d(0xb0)](_0x256b1d(0xe7),_0x256b1d(0xc9));return await select({'message':'请选择本地\x20SQL\x20模式:','choices':[{'name':_0x256b1d(0xde),'value':_0x256b1d(0xd6),'description':'适合直接执行的普通\x20SELECT\x20/\x20INSERT\x20/\x20UPDATE\x20/\x20DELETE\x20语句'},{'name':'MyBatis\x20XML(mybatisXml)','value':'mybatisXml','description':'适合带动态标签的\x20MyBatis\x20XML\x20SQL'}]});}function serializeDbSelection(_0x3c5cbb){const _0x5df819=a121_0x2aa050;return JSON[_0x5df819(0xb8)]({'dbId':_0x3c5cbb[_0x5df819(0xc8)],'dbName':_0x3c5cbb[_0x5df819(0xdf)]});}function a121_0x1aec(_0x8e210,_0x1a0780){_0x8e210=_0x8e210-0xad;const _0x95c0ca=a121_0x95c0();let _0x1aec47=_0x95c0ca[_0x8e210];return _0x1aec47;}function deserializeDbSelection(_0x40a952){const _0x46eb6c=a121_0x2aa050;try{const _0xedda84=JSON['parse'](_0x40a952);if(typeof _0xedda84[_0x46eb6c(0xc8)]===_0x46eb6c(0xc7)&&Number[_0x46eb6c(0xda)](_0xedda84[_0x46eb6c(0xc8)]))return{'dbId':_0xedda84['dbId'],'dbName':_0xedda84[_0x46eb6c(0xdf)]};}catch{}throw CliErrors[_0x46eb6c(0xae)](_0x46eb6c(0xef)+_0x40a952);}function resolveProvidedDbId(_0x3155c0){const _0x2dbdfc=a121_0x2aa050,_0x476765=_0x3155c0[_0x2dbdfc(0xd9)](_0x2dbdfc(0xeb));if(typeof _0x476765===_0x2dbdfc(0xc7)&&Number[_0x2dbdfc(0xda)](_0x476765))return _0x476765;return undefined;}
@@ -1 +1 @@
1
- function a121_0x4f14(_0x2af1aa,_0x2edce4){_0x2af1aa=_0x2af1aa-0xae;const _0x42abc4=a121_0x42ab();let _0x4f1489=_0x42abc4[_0x2af1aa];return _0x4f1489;}const a121_0x36c3c3=a121_0x4f14;(function(_0x3322e8,_0x72e0f4){const _0x179027=a121_0x4f14,_0xc48909=_0x3322e8();while(!![]){try{const _0x9b963d=parseInt(_0x179027(0xb2))/0x1+parseInt(_0x179027(0xaf))/0x2+parseInt(_0x179027(0xc5))/0x3*(parseInt(_0x179027(0xc9))/0x4)+-parseInt(_0x179027(0xbf))/0x5+-parseInt(_0x179027(0xce))/0x6*(parseInt(_0x179027(0xbe))/0x7)+parseInt(_0x179027(0xb4))/0x8*(-parseInt(_0x179027(0xc1))/0x9)+parseInt(_0x179027(0xcf))/0xa;if(_0x9b963d===_0x72e0f4)break;else _0xc48909['push'](_0xc48909['shift']());}catch(_0x565326){_0xc48909['push'](_0xc48909['shift']());}}}(a121_0x42ab,0xb89a8));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';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':a121_0x36c3c3(0xc2),'command':a121_0x36c3c3(0xba),'description':a121_0x36c3c3(0xb8),'risk':a121_0x36c3c3(0xb5),'flags':[SQLCODE_FLAG],async 'validate'(_0x1596c7){const _0x3a2460=a121_0x36c3c3,_0x3db694=loadSqlProjectConfig(_0x1596c7['appCode']),_0x3cbe9e=await readSqlLockFile(_0x3db694[_0x3a2460(0xc3)]);if(!_0x3cbe9e)throw CliErrors[_0x3a2460(0xc0)]('SQL\x20lock\x20file\x20not\x20found.\x20Run\x20`rabetbase\x20sql\x20create`\x20or\x20`rabetbase\x20sql\x20pull`\x20first.');},async 'dryRun'(_0x94132e){const _0x49f0d0=a121_0x36c3c3,_0x329571=loadSqlProjectConfig(_0x94132e['appCode']),_0x227ce6=await readSqlLockFile(_0x329571['lockFilePath']);if(!_0x227ce6)throw CliErrors[_0x49f0d0(0xc0)]('SQL\x20lock\x20file\x20not\x20found.\x20Run\x20`rabetbase\x20sql\x20create`\x20or\x20`rabetbase\x20sql\x20pull`\x20first.');const {appLock:_0xf41a33}=ensureSqlLockScope(_0x227ce6,_0x94132e[_0x49f0d0(0xb7)],_0x329571[_0x49f0d0(0xcd)],'delete'),_0x447f7e=_0x94132e[_0x49f0d0(0xae)]('sqlcode'),_0x359ccf=_0xf41a33['sqls'][_0x447f7e];if(!_0x359ccf)throw CliErrors[_0x49f0d0(0xc0)](_0x49f0d0(0xbd)+_0x447f7e+'\x22.');return{'method':'POST','url':_0x49f0d0(0xbc),'body':{'sqlCode':_0x447f7e,'id':_0x359ccf[_0x49f0d0(0xcc)],'localPath':resolveLocalSqlFilePath(_0x329571,_0x447f7e,_0x359ccf)},'description':'Would\x20delete\x20SQL\x20'+_0x447f7e+_0x49f0d0(0xc4)+_0x329571[_0x49f0d0(0xb1)]};},async 'execute'(_0x5cc4d3){const _0x2c27bb=a121_0x36c3c3,_0x40b853=loadSqlProjectConfig(_0x5cc4d3['appCode']),_0x49fc73=await readSqlLockFile(_0x40b853['lockFilePath']);if(!_0x49fc73)throw CliErrors[_0x2c27bb(0xc0)](_0x2c27bb(0xca));const {lockData:_0x556ba0,appLock:_0x19b334}=ensureSqlLockScope(_0x49fc73,_0x5cc4d3[_0x2c27bb(0xb7)],_0x40b853['sqlRoot'],_0x2c27bb(0xba)),_0x40e8ac=_0x5cc4d3[_0x2c27bb(0xae)]('sqlcode'),_0x1b0779=_0x19b334[_0x2c27bb(0xb6)][_0x40e8ac];if(!_0x1b0779)throw CliErrors[_0x2c27bb(0xc0)](_0x2c27bb(0xbd)+_0x40e8ac+'\x22.');await deleteSqlQuery({'id':_0x1b0779['remoteId'],'sqlCode':_0x40e8ac}),_0x19b334['sqls']=Object[_0x2c27bb(0xc7)](Object[_0x2c27bb(0xb9)](_0x19b334['sqls'])[_0x2c27bb(0xcb)](([_0x57c4c8])=>_0x57c4c8!==_0x40e8ac)),_0x19b334[_0x2c27bb(0xb3)]=new Date()[_0x2c27bb(0xbb)](),await writeSqlLockFile(_0x40b853[_0x2c27bb(0xc3)],_0x556ba0);const _0x342e96=resolveLocalSqlFilePath(_0x40b853,_0x40e8ac,_0x1b0779);let _0x27e8a5;await fileExists(_0x342e96)&&(_0x27e8a5=await moveToTrash(_0x40b853[_0x2c27bb(0xd0)],_0x40b853['trashDir'],_0x342e96),await cleanupEmptyDirectories(dirname(_0x342e96),_0x40b853[_0x2c27bb(0xc8)]));const _0x2a7f0c={'deleted':_0x40e8ac,'remoteId':_0x1b0779[_0x2c27bb(0xcc)]};if(_0x27e8a5)_0x2a7f0c['trashedTo']=_0x27e8a5;return{'ok':!![],'data':_0x2a7f0c,'message':_0x2c27bb(0xd1)+_0x40e8ac+(_0x27e8a5?_0x2c27bb(0xd2):'')};}};async function moveToTrash(_0x5d0849,_0x135821,_0x33595e){const _0x16dfe4=a121_0x36c3c3,_0x48a090=new Date()[_0x16dfe4(0xbb)]()[_0x16dfe4(0xc6)](/[:.]/g,'-'),_0x484106=relative(_0x5d0849,_0x33595e),_0x339a9c=join(_0x135821,_0x48a090,_0x484106);return await mkdir(dirname(_0x339a9c),{'recursive':!![]}),await rename(_0x33595e,_0x339a9c),_0x339a9c;}function a121_0x42ab(){const _0x188e4c=['validation','1917ECYkhl','sql','lockFilePath','\x20from\x20remote\x20and\x20move\x20local\x20file\x20to\x20','6WxNclU','replace','fromEntries','sqlRootDir','1611484GFLylR','SQL\x20lock\x20file\x20not\x20found.','filter','remoteId','sqlRoot','4250898JxLcBA','11888090QpeaoO','projectRoot','Deleted\x20','\x20(local\x20file\x20moved\x20to\x20trash)','str','75916vhKtzc','startsWith','trashDir','887613rtHDkp','lastSync','40480NhcdgQ','high-risk-write','sqls','appCode','Delete\x20a\x20SQL\x20query\x20from\x20remote\x20and\x20local','entries','delete','toISOString','/smartapi/custom/deleteUserCustomSql','No\x20SQL\x20lock\x20entry\x20found\x20for\x20\x22','7ArDMnV','1888615DCTVNF'];a121_0x42ab=function(){return _0x188e4c;};return a121_0x42ab();}async function cleanupEmptyDirectories(_0x246b04,_0x141259){const _0x404fce=a121_0x36c3c3;let _0x1fa14c=resolve(_0x246b04);const _0x3e37e8=resolve(_0x141259);while(_0x1fa14c[_0x404fce(0xb0)](''+_0x3e37e8+sep)||_0x1fa14c===_0x3e37e8){if(_0x1fa14c===_0x3e37e8)return;try{const _0x1864ff=await readdir(_0x1fa14c);if(_0x1864ff['length']>0x0)return;await rmdir(_0x1fa14c);}catch{return;}_0x1fa14c=dirname(_0x1fa14c);}}
1
+ const a122_0x163f15=a122_0x1af2;(function(_0x5f3da3,_0x56728f){const _0x2a2565=a122_0x1af2,_0x4d8af3=_0x5f3da3();while(!![]){try{const _0x389b24=parseInt(_0x2a2565(0x1a4))/0x1*(parseInt(_0x2a2565(0x1be))/0x2)+parseInt(_0x2a2565(0x1b8))/0x3+parseInt(_0x2a2565(0x1b6))/0x4*(parseInt(_0x2a2565(0x1a9))/0x5)+-parseInt(_0x2a2565(0x1c5))/0x6*(parseInt(_0x2a2565(0x1b3))/0x7)+parseInt(_0x2a2565(0x1ab))/0x8+parseInt(_0x2a2565(0x1b9))/0x9*(-parseInt(_0x2a2565(0x1a5))/0xa)+-parseInt(_0x2a2565(0x1c4))/0xb;if(_0x389b24===_0x56728f)break;else _0x4d8af3['push'](_0x4d8af3['shift']());}catch(_0x2b09fa){_0x4d8af3['push'](_0x4d8af3['shift']());}}}(a122_0x1f8c,0x268ce));function a122_0x1af2(_0x48deaa,_0x6f7d62){_0x48deaa=_0x48deaa-0x19e;const _0x1f8c49=a122_0x1f8c();let _0x1af2bb=_0x1f8c49[_0x48deaa];return _0x1af2bb;}function a122_0x1f8c(){const _0x1c16c8=['1654059cFgkKM','546yyUlvf','entries','trashedTo','appCode','validation','lastSync','/smartapi/custom/deleteUserCustomSql','toISOString','1fVoYxV','40vfslgO','Deleted\x20','sqls','\x20from\x20remote\x20and\x20move\x20local\x20file\x20to\x20','144295QZEDzi','startsWith','853088uJkgTK','SQL\x20lock\x20file\x20not\x20found.','trashDir','\x20(local\x20file\x20moved\x20to\x20trash)','No\x20SQL\x20lock\x20entry\x20found\x20for\x20\x22','POST','replace','sqlRoot','4767YtkpND','fromEntries','str','8WcWgpO','remoteId','820002fRlIRn','370953ZTWgCr','Would\x20delete\x20SQL\x20','filter','length','Delete\x20a\x20SQL\x20query\x20from\x20remote\x20and\x20local','194844gHlnpC','high-risk-write','lockFilePath','sqlcode','SQL\x20lock\x20file\x20not\x20found.\x20Run\x20`rabetbase\x20sql\x20create`\x20or\x20`rabetbase\x20sql\x20pull`\x20first.','delete'];a122_0x1f8c=function(){return _0x1c16c8;};return a122_0x1f8c();}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';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':'sql','command':a122_0x163f15(0x1c3),'description':a122_0x163f15(0x1bd),'risk':a122_0x163f15(0x1bf),'flags':[SQLCODE_FLAG],async 'validate'(_0x10a90d){const _0xccc75f=a122_0x163f15,_0x310c6b=loadSqlProjectConfig(_0x10a90d['appCode']),_0x2f369a=await readSqlLockFile(_0x310c6b[_0xccc75f(0x1c0)]);if(!_0x2f369a)throw CliErrors[_0xccc75f(0x1a0)](_0xccc75f(0x1c2));},async 'dryRun'(_0x462930){const _0x3868a5=a122_0x163f15,_0x4a05e5=loadSqlProjectConfig(_0x462930[_0x3868a5(0x19f)]),_0x2e95d5=await readSqlLockFile(_0x4a05e5['lockFilePath']);if(!_0x2e95d5)throw CliErrors[_0x3868a5(0x1a0)](_0x3868a5(0x1c2));const {appLock:_0x3312c3}=ensureSqlLockScope(_0x2e95d5,_0x462930[_0x3868a5(0x19f)],_0x4a05e5['sqlRoot'],_0x3868a5(0x1c3)),_0x4c1583=_0x462930[_0x3868a5(0x1b5)]('sqlcode'),_0x3d07e9=_0x3312c3[_0x3868a5(0x1a7)][_0x4c1583];if(!_0x3d07e9)throw CliErrors[_0x3868a5(0x1a0)](_0x3868a5(0x1af)+_0x4c1583+'\x22.');return{'method':_0x3868a5(0x1b0),'url':_0x3868a5(0x1a2),'body':{'sqlCode':_0x4c1583,'id':_0x3d07e9[_0x3868a5(0x1b7)],'localPath':resolveLocalSqlFilePath(_0x4a05e5,_0x4c1583,_0x3d07e9)},'description':_0x3868a5(0x1ba)+_0x4c1583+_0x3868a5(0x1a8)+_0x4a05e5[_0x3868a5(0x1ad)]};},async 'execute'(_0x29586b){const _0x28ef57=a122_0x163f15,_0x331460=loadSqlProjectConfig(_0x29586b[_0x28ef57(0x19f)]),_0x23ed95=await readSqlLockFile(_0x331460['lockFilePath']);if(!_0x23ed95)throw CliErrors[_0x28ef57(0x1a0)](_0x28ef57(0x1ac));const {lockData:_0x3573fc,appLock:_0x337d57}=ensureSqlLockScope(_0x23ed95,_0x29586b[_0x28ef57(0x19f)],_0x331460[_0x28ef57(0x1b2)],_0x28ef57(0x1c3)),_0x4d7136=_0x29586b[_0x28ef57(0x1b5)](_0x28ef57(0x1c1)),_0x4cc516=_0x337d57[_0x28ef57(0x1a7)][_0x4d7136];if(!_0x4cc516)throw CliErrors['validation']('No\x20SQL\x20lock\x20entry\x20found\x20for\x20\x22'+_0x4d7136+'\x22.');await deleteSqlQuery({'id':_0x4cc516[_0x28ef57(0x1b7)],'sqlCode':_0x4d7136}),_0x337d57[_0x28ef57(0x1a7)]=Object[_0x28ef57(0x1b4)](Object[_0x28ef57(0x1c6)](_0x337d57[_0x28ef57(0x1a7)])[_0x28ef57(0x1bb)](([_0x5d691f])=>_0x5d691f!==_0x4d7136)),_0x337d57[_0x28ef57(0x1a1)]=new Date()['toISOString'](),await writeSqlLockFile(_0x331460[_0x28ef57(0x1c0)],_0x3573fc);const _0x44ed1f=resolveLocalSqlFilePath(_0x331460,_0x4d7136,_0x4cc516);let _0x5595b7;await fileExists(_0x44ed1f)&&(_0x5595b7=await moveToTrash(_0x331460['projectRoot'],_0x331460['trashDir'],_0x44ed1f),await cleanupEmptyDirectories(dirname(_0x44ed1f),_0x331460['sqlRootDir']));const _0x30c32b={'deleted':_0x4d7136,'remoteId':_0x4cc516[_0x28ef57(0x1b7)]};if(_0x5595b7)_0x30c32b[_0x28ef57(0x19e)]=_0x5595b7;return{'ok':!![],'data':_0x30c32b,'message':_0x28ef57(0x1a6)+_0x4d7136+(_0x5595b7?_0x28ef57(0x1ae):'')};}};async function moveToTrash(_0x10fc71,_0x79307f,_0x2a731e){const _0x6c5da9=a122_0x163f15,_0x248391=new Date()[_0x6c5da9(0x1a3)]()[_0x6c5da9(0x1b1)](/[:.]/g,'-'),_0x4995d6=relative(_0x10fc71,_0x2a731e),_0x5b1e1d=join(_0x79307f,_0x248391,_0x4995d6);return await mkdir(dirname(_0x5b1e1d),{'recursive':!![]}),await rename(_0x2a731e,_0x5b1e1d),_0x5b1e1d;}async function cleanupEmptyDirectories(_0x46f0b2,_0x229c21){const _0x1c34db=a122_0x163f15;let _0x569d24=resolve(_0x46f0b2);const _0x40239c=resolve(_0x229c21);while(_0x569d24[_0x1c34db(0x1aa)](''+_0x40239c+sep)||_0x569d24===_0x40239c){if(_0x569d24===_0x40239c)return;try{const _0x17f6d8=await readdir(_0x569d24);if(_0x17f6d8[_0x1c34db(0x1bc)]>0x0)return;await rmdir(_0x569d24);}catch{return;}_0x569d24=dirname(_0x569d24);}}
@@ -1 +1 @@
1
- const a122_0x272449=a122_0x921b;(function(_0x45d38e,_0x3998f3){const _0xe92c76=a122_0x921b,_0x24f029=_0x45d38e();while(!![]){try{const _0x41739c=parseInt(_0xe92c76(0xe9))/0x1*(-parseInt(_0xe92c76(0xe6))/0x2)+-parseInt(_0xe92c76(0xe8))/0x3+parseInt(_0xe92c76(0xfb))/0x4+parseInt(_0xe92c76(0xec))/0x5*(parseInt(_0xe92c76(0xf1))/0x6)+parseInt(_0xe92c76(0xe4))/0x7*(parseInt(_0xe92c76(0xea))/0x8)+parseInt(_0xe92c76(0xed))/0x9*(parseInt(_0xe92c76(0xef))/0xa)+parseInt(_0xe92c76(0xf0))/0xb*(-parseInt(_0xe92c76(0xf9))/0xc);if(_0x41739c===_0x3998f3)break;else _0x24f029['push'](_0x24f029['shift']());}catch(_0x372a98){_0x24f029['push'](_0x24f029['shift']());}}}(a122_0x4e4d,0x62e42));import{getSqlQueryInfo}from'../../core/api-client.js';import{getDbName}from'../../core/db-resolver.js';import{SQLCODE_FLAG}from'../../commands/common/flags.js';function a122_0x921b(_0x20fab9,_0x1d27bb){_0x20fab9=_0x20fab9-0xe4;const _0x4e4d87=a122_0x4e4d();let _0x921b8f=_0x4e4d87[_0x20fab9];return _0x921b8f;}function a122_0x4e4d(){const _0xecc990=['874884VzDwFz','1151HFrzcn','712UtbxUg','boolean','4030145lEMWZE','1474749DrYRmP','sqlCode','10pPggTN','143FZCIUS','6mwLBtb','appCode','dbId','Get\x20custom\x20SQL\x20query\x20details\x20by\x20sqlCode','sqlContent','detail','description','verbose','1194156kcrScn','read','2479192qLAwaY','48804RkxdYp','str','382vxfccW','sqlcode'];a122_0x4e4d=function(){return _0xecc990;};return a122_0x4e4d();}export const sqlDetail={'service':'sql','command':a122_0x272449(0xf6),'description':a122_0x272449(0xf4),'risk':a122_0x272449(0xfa),'flags':[SQLCODE_FLAG,{'name':a122_0x272449(0xf8),'type':a122_0x272449(0xeb),'description':'Return\x20full\x20raw\x20SQL\x20query\x20object'}],async 'execute'(_0x26bad1){const _0x251b4d=a122_0x272449,_0x5b8c25=await getSqlQueryInfo(_0x26bad1[_0x251b4d(0xf2)],_0x26bad1[_0x251b4d(0xe5)](_0x251b4d(0xe7))),_0x26c3f5=_0x26bad1['bool']('verbose');if(_0x26c3f5)return{'ok':!![],'data':_0x5b8c25};const _0x348767=_0x5b8c25[_0x251b4d(0xf3)]?await getDbName(_0x26bad1['appCode'],_0x5b8c25['dbId']):undefined;return{'ok':!![],'data':{'sqlCode':_0x5b8c25[_0x251b4d(0xee)],'sqlName':_0x5b8c25['sqlName'],'db':_0x348767?_0x348767+'\x20('+_0x5b8c25[_0x251b4d(0xf3)]+')':_0x5b8c25[_0x251b4d(0xf3)]??'','description':_0x5b8c25[_0x251b4d(0xf7)]??'','sqlContent':_0x5b8c25[_0x251b4d(0xf5)]??''}};}};
1
+ const a123_0x54e4ae=a123_0x1f88;function a123_0x4a3a(){const _0x4d5960=['Return\x20full\x20raw\x20SQL\x20query\x20object','796195OIOTRx','dbId','660663yZmVBH','618dQlYJh','Get\x20custom\x20SQL\x20query\x20details\x20by\x20sqlCode','250jeeuNy','sqlName','680440LCfyDA','bool','1082664GShOYY','sqlContent','sqlcode','verbose','detail','27zHzGEo','1171056NIZuUN','description','7eKYBbL','boolean','appCode','25479CDCzzb'];a123_0x4a3a=function(){return _0x4d5960;};return a123_0x4a3a();}(function(_0x349c25,_0x3421bd){const _0x3f323a=a123_0x1f88,_0x68c6c6=_0x349c25();while(!![]){try{const _0x45f59c=-parseInt(_0x3f323a(0x93))/0x1*(-parseInt(_0x3f323a(0x88))/0x2)+parseInt(_0x3f323a(0x87))/0x3+-parseInt(_0x3f323a(0x8c))/0x4+parseInt(_0x3f323a(0x85))/0x5+-parseInt(_0x3f323a(0x8e))/0x6+parseInt(_0x3f323a(0x96))/0x7*(parseInt(_0x3f323a(0x94))/0x8)+parseInt(_0x3f323a(0x83))/0x9*(-parseInt(_0x3f323a(0x8a))/0xa);if(_0x45f59c===_0x3421bd)break;else _0x68c6c6['push'](_0x68c6c6['shift']());}catch(_0x243984){_0x68c6c6['push'](_0x68c6c6['shift']());}}}(a123_0x4a3a,0x1b8d8));import{getSqlQueryInfo}from'../../core/api-client.js';import{getDbName}from'../../core/db-resolver.js';import{SQLCODE_FLAG}from'../../commands/common/flags.js';function a123_0x1f88(_0x54feae,_0x2435c8){_0x54feae=_0x54feae-0x83;const _0x4a3ab2=a123_0x4a3a();let _0x1f882e=_0x4a3ab2[_0x54feae];return _0x1f882e;}export const sqlDetail={'service':'sql','command':a123_0x54e4ae(0x92),'description':a123_0x54e4ae(0x89),'risk':'read','flags':[SQLCODE_FLAG,{'name':a123_0x54e4ae(0x91),'type':a123_0x54e4ae(0x97),'description':a123_0x54e4ae(0x84)}],async 'execute'(_0x1001dc){const _0x439f28=a123_0x54e4ae,_0x1243bb=await getSqlQueryInfo(_0x1001dc[_0x439f28(0x98)],_0x1001dc['str'](_0x439f28(0x90))),_0xa49735=_0x1001dc[_0x439f28(0x8d)](_0x439f28(0x91));if(_0xa49735)return{'ok':!![],'data':_0x1243bb};const _0x6e9778=_0x1243bb[_0x439f28(0x86)]?await getDbName(_0x1001dc['appCode'],_0x1243bb[_0x439f28(0x86)]):undefined;return{'ok':!![],'data':{'sqlCode':_0x1243bb['sqlCode'],'sqlName':_0x1243bb[_0x439f28(0x8b)],'db':_0x6e9778?_0x6e9778+'\x20('+_0x1243bb['dbId']+')':_0x1243bb['dbId']??'','description':_0x1243bb[_0x439f28(0x95)]??'','sqlContent':_0x1243bb[_0x439f28(0x8f)]??''}};}};
@@ -1 +1 @@
1
- const a123_0x24d02c=a123_0x633c;(function(_0x89b455,_0x4c2362){const _0x4deb07=a123_0x633c,_0x24e546=_0x89b455();while(!![]){try{const _0x35c34e=-parseInt(_0x4deb07(0x150))/0x1*(parseInt(_0x4deb07(0x148))/0x2)+parseInt(_0x4deb07(0x15d))/0x3+-parseInt(_0x4deb07(0x154))/0x4+parseInt(_0x4deb07(0x14c))/0x5+-parseInt(_0x4deb07(0x151))/0x6+-parseInt(_0x4deb07(0x157))/0x7*(parseInt(_0x4deb07(0x153))/0x8)+parseInt(_0x4deb07(0x155))/0x9;if(_0x35c34e===_0x4c2362)break;else _0x24e546['push'](_0x24e546['shift']());}catch(_0x1a5109){_0x24e546['push'](_0x24e546['shift']());}}}(a123_0x5348,0xf1179));function a123_0x5348(){const _0x178f04=['string','40131LLptsx','params','Returned\x20','SQL\x20parameters\x20as\x20JSON\x20string\x20(e.g.\x20\x27{\x22key\x22:\x22value\x22}\x27)','sql','Execute\x20a\x20custom\x20SQL\x20query\x20by\x20sqlCode','1523250SXnjyp','62268WCckRb','sqlcode','appCode','length','2282765OpFbsZ','isArray','execSuccess','execResult','48jnNuyC','1370064fShrtm','str','304HCAxuD','6284104WMhSgo','31813794jOyZXs'];a123_0x5348=function(){return _0x178f04;};return a123_0x5348();}import{executeSql}from'../../core/api-client.js';function a123_0x633c(_0x2d9d9a,_0x1c5653){_0x2d9d9a=_0x2d9d9a-0x148;const _0x534887=a123_0x5348();let _0x633c51=_0x534887[_0x2d9d9a];return _0x633c51;}import{SQLCODE_FLAG}from'../../commands/common/flags.js';import{parseJsonParams}from'../../utils/params.js';export const sqlExec={'service':a123_0x24d02c(0x15b),'command':'exec','description':a123_0x24d02c(0x15c),'risk':'read','flags':[SQLCODE_FLAG,{'name':a123_0x24d02c(0x158),'type':a123_0x24d02c(0x156),'description':a123_0x24d02c(0x15a)}],async 'execute'(_0xfea42c){const _0x8a483f=a123_0x24d02c,_0x4392bf=parseJsonParams(_0xfea42c[_0x8a483f(0x152)](_0x8a483f(0x158))),_0x396f5a=Date['now'](),_0xa37311=await executeSql(_0xfea42c[_0x8a483f(0x14a)],_0xfea42c[_0x8a483f(0x152)](_0x8a483f(0x149)),_0x4392bf),_0x58990b=Date['now']()-_0x396f5a,_0x36374d=_0xa37311?.[_0x8a483f(0x14f)]??_0xa37311,_0x5b3891=_0xa37311?.[_0x8a483f(0x14e)]??!![];if(!_0x5b3891)return{'ok':![],'data':{'error':_0xa37311?.['execError']||'SQL\x20execution\x20failed','elapsed':_0x58990b},'message':'SQL\x20execution\x20failed'};const _0x26042d=Array[_0x8a483f(0x14d)](_0x36374d)?_0x36374d:[];return{'ok':!![],'data':{'rows':_0x26042d,'rowCount':_0x26042d['length'],'elapsed':_0x58990b},'message':_0x8a483f(0x159)+_0x26042d[_0x8a483f(0x14b)]+'\x20row(s)\x20in\x20'+_0x58990b+'ms'};}};
1
+ const a124_0x460cd4=a124_0x5190;function a124_0x5798(){const _0xc2f500=['read','33MMLVMb','185190hxeKhS','119LgRwvS','str','29170380RRBNIC','string','SQL\x20parameters\x20as\x20JSON\x20string\x20(e.g.\x20\x27{\x22key\x22:\x22value\x22}\x27)','SQL\x20execution\x20failed','execError','isArray','11876fJNzOK','now','74678RDcwjy','execResult','sql','36ecDFHL','params','1111fDWvuH','length','42650soWcXB','8509150jkivUW','sqlcode','1873952TYzieV','\x20row(s)\x20in\x20','1416sRGlEM','Execute\x20a\x20custom\x20SQL\x20query\x20by\x20sqlCode'];a124_0x5798=function(){return _0xc2f500;};return a124_0x5798();}(function(_0x4f2581,_0x26b908){const _0x222b9d=a124_0x5190,_0x24a186=_0x4f2581();while(!![]){try{const _0x4b2ae3=-parseInt(_0x222b9d(0x132))/0x1*(-parseInt(_0x222b9d(0x123))/0x2)+parseInt(_0x222b9d(0x12f))/0x3*(parseInt(_0x222b9d(0x121))/0x4)+parseInt(_0x222b9d(0x12b))/0x5+-parseInt(_0x222b9d(0x133))/0x6*(parseInt(_0x222b9d(0x134))/0x7)+parseInt(_0x222b9d(0x12d))/0x8*(-parseInt(_0x222b9d(0x126))/0x9)+parseInt(_0x222b9d(0x12a))/0xa*(parseInt(_0x222b9d(0x128))/0xb)+-parseInt(_0x222b9d(0x11b))/0xc;if(_0x4b2ae3===_0x26b908)break;else _0x24a186['push'](_0x24a186['shift']());}catch(_0x32d210){_0x24a186['push'](_0x24a186['shift']());}}}(a124_0x5798,0xd5484));import{executeSql}from'../../core/api-client.js';import{SQLCODE_FLAG}from'../../commands/common/flags.js';function a124_0x5190(_0x20ce5d,_0x26e882){_0x20ce5d=_0x20ce5d-0x11b;const _0x57982e=a124_0x5798();let _0x519088=_0x57982e[_0x20ce5d];return _0x519088;}import{parseJsonParams}from'../../utils/params.js';export const sqlExec={'service':a124_0x460cd4(0x125),'command':'exec','description':a124_0x460cd4(0x130),'risk':a124_0x460cd4(0x131),'flags':[SQLCODE_FLAG,{'name':'params','type':a124_0x460cd4(0x11c),'description':a124_0x460cd4(0x11d)}],async 'execute'(_0x34633){const _0x508105=a124_0x460cd4,_0x4eb961=parseJsonParams(_0x34633[_0x508105(0x135)](_0x508105(0x127))),_0x4ab395=Date[_0x508105(0x122)](),_0x16ae87=await executeSql(_0x34633['appCode'],_0x34633[_0x508105(0x135)](_0x508105(0x12c)),_0x4eb961),_0x5c9a65=Date['now']()-_0x4ab395,_0x5d1b60=_0x16ae87?.[_0x508105(0x124)]??_0x16ae87,_0x50f766=_0x16ae87?.['execSuccess']??!![];if(!_0x50f766)return{'ok':![],'data':{'error':_0x16ae87?.[_0x508105(0x11f)]||_0x508105(0x11e),'elapsed':_0x5c9a65},'message':_0x508105(0x11e)};const _0x5456ee=Array[_0x508105(0x120)](_0x5d1b60)?_0x5d1b60:[];return{'ok':!![],'data':{'rows':_0x5456ee,'rowCount':_0x5456ee[_0x508105(0x129)],'elapsed':_0x5c9a65},'message':'Returned\x20'+_0x5456ee['length']+_0x508105(0x12e)+_0x5c9a65+'ms'};}};
@@ -1 +1 @@
1
- function a124_0x2ad6(){const _0x3e9972=['3107979MGLvau','1557OceWOF','6aabkCx','5257516llffeq','10vcNLXc','47870UrnCvR','14181ARkSxv','3207503aDIEti','60rxEjyr','116IumoAr','79960ZpBQSx','14888FcTYgH','236sINivO'];a124_0x2ad6=function(){return _0x3e9972;};return a124_0x2ad6();}(function(_0x5cd402,_0x2fdef7){const _0x284470=a124_0x2d61,_0xb5f8e0=_0x5cd402();while(!![]){try{const _0x43ab31=parseInt(_0x284470(0x1e0))/0x1+parseInt(_0x284470(0x1df))/0x2*(parseInt(_0x284470(0x1e9))/0x3)+-parseInt(_0x284470(0x1e2))/0x4*(-parseInt(_0x284470(0x1e8))/0x5)+-parseInt(_0x284470(0x1e5))/0x6*(-parseInt(_0x284470(0x1e3))/0x7)+-parseInt(_0x284470(0x1e1))/0x8*(parseInt(_0x284470(0x1e4))/0x9)+parseInt(_0x284470(0x1e7))/0xa*(parseInt(_0x284470(0x1e6))/0xb)+-parseInt(_0x284470(0x1eb))/0xc*(parseInt(_0x284470(0x1ea))/0xd);if(_0x43ab31===_0x2fdef7)break;else _0xb5f8e0['push'](_0xb5f8e0['shift']());}catch(_0x3dc090){_0xb5f8e0['push'](_0xb5f8e0['shift']());}}}(a124_0x2ad6,0x45a99));import{sqlList}from'../../commands/sql/list.js';import{sqlDetail}from'../../commands/sql/detail.js';import{sqlValidate}from'../../commands/sql/validate.js';function a124_0x2d61(_0x3f956b,_0x37ceaa){_0x3f956b=_0x3f956b-0x1df;const _0x2ad6bf=a124_0x2ad6();let _0x2d61ea=_0x2ad6bf[_0x3f956b];return _0x2d61ea;}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';export const sqlDefinitions=[sqlList,sqlDetail,sqlStatus,sqlCreate,sqlPush,sqlValidate,sqlSave,sqlExec,sqlPull,sqlDelete];
1
+ (function(_0x15f424,_0x57c4d0){const _0x38e2fe=a125_0x472b,_0x527bfd=_0x15f424();while(!![]){try{const _0x424bbb=parseInt(_0x38e2fe(0x90))/0x1+-parseInt(_0x38e2fe(0x93))/0x2+parseInt(_0x38e2fe(0x98))/0x3+-parseInt(_0x38e2fe(0x95))/0x4+parseInt(_0x38e2fe(0x97))/0x5*(-parseInt(_0x38e2fe(0x96))/0x6)+parseInt(_0x38e2fe(0x94))/0x7+parseInt(_0x38e2fe(0x91))/0x8*(-parseInt(_0x38e2fe(0x92))/0x9);if(_0x424bbb===_0x57c4d0)break;else _0x527bfd['push'](_0x527bfd['shift']());}catch(_0x525067){_0x527bfd['push'](_0x527bfd['shift']());}}}(a125_0x4231,0x62129));import{sqlList}from'../../commands/sql/list.js';import{sqlDetail}from'../../commands/sql/detail.js';function a125_0x4231(){const _0x56ec23=['5165251CXajNy','226504EJjzFv','2407926NEvOSR','5RDLHaZ','2005785mIBBqx','681979ddFzfz','9224IcBQsG','4266kKZDPe','1364586sJzgoa'];a125_0x4231=function(){return _0x56ec23;};return a125_0x4231();}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';function a125_0x472b(_0x52b7a1,_0x11c40b){_0x52b7a1=_0x52b7a1-0x90;const _0x423103=a125_0x4231();let _0x472b68=_0x423103[_0x52b7a1];return _0x472b68;}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';export const sqlDefinitions=[sqlList,sqlDetail,sqlStatus,sqlCreate,sqlPush,sqlValidate,sqlSave,sqlExec,sqlPull,sqlDelete];
@@ -1 +1 @@
1
- function a125_0x571d(){const _0x238619=['number','Return\x20full\x20SQL\x20query\x20objects\x20including\x20parameters\x20and\x20SQL\x20content','string','14174622RvXyxX','tableData','num','bool','str','name','dbId','727044dSycht','sql','boolean','6RbzYsv','\x20SQL\x20queries\x20(total:\x20','4GBTeLh','page','1305856ogwHdy','totalCount','150736Niejzg','Filter\x20by\x20SQL\x20name','read','sqlCode','2128064KrDfbU','paging','Page\x20size','sqlcode','No\x20custom\x20SQL\x20queries\x20found.','appCode','List\x20custom\x20SQL\x20queries','pagesize','1355585rFXFIK','description','1285228iidrzp'];a125_0x571d=function(){return _0x238619;};return a125_0x571d();}const a125_0x41f1a5=a125_0x35f8;(function(_0x4ab5b9,_0x5c7e10){const _0x3d2ba3=a125_0x35f8,_0x14f5ac=_0x4ab5b9();while(!![]){try{const _0x30a2aa=parseInt(_0x3d2ba3(0x1c9))/0x1*(parseInt(_0x3d2ba3(0x1c5))/0x2)+parseInt(_0x3d2ba3(0x1c3))/0x3*(-parseInt(_0x3d2ba3(0x1c7))/0x4)+-parseInt(_0x3d2ba3(0x1b3))/0x5+-parseInt(_0x3d2ba3(0x1c0))/0x6+-parseInt(_0x3d2ba3(0x1b5))/0x7+-parseInt(_0x3d2ba3(0x1cd))/0x8+parseInt(_0x3d2ba3(0x1b9))/0x9;if(_0x30a2aa===_0x5c7e10)break;else _0x14f5ac['push'](_0x14f5ac['shift']());}catch(_0x4b5f83){_0x14f5ac['push'](_0x14f5ac['shift']());}}}(a125_0x571d,0x5d29f));import{listSqlQueries}from'../../core/api-client.js';function a125_0x35f8(_0x241327,_0x5b6848){_0x241327=_0x241327-0x1ae;const _0x571d41=a125_0x571d();let _0x35f866=_0x571d41[_0x241327];return _0x35f866;}import{getDbName}from'../../core/db-resolver.js';import{SQLCODE_FLAG_OPTIONAL}from'../../commands/common/flags.js';export const sqlList={'service':a125_0x41f1a5(0x1c1),'command':'list','description':a125_0x41f1a5(0x1b1),'risk':a125_0x41f1a5(0x1cb),'flags':[SQLCODE_FLAG_OPTIONAL,{'name':a125_0x41f1a5(0x1be),'type':a125_0x41f1a5(0x1b8),'description':a125_0x41f1a5(0x1ca)},{'name':a125_0x41f1a5(0x1c6),'type':a125_0x41f1a5(0x1b6),'description':'Page\x20number','default':0x1},{'name':'pagesize','type':a125_0x41f1a5(0x1b6),'description':a125_0x41f1a5(0x1cf)},{'name':'verbose','type':a125_0x41f1a5(0x1c2),'description':a125_0x41f1a5(0x1b7)}],async 'execute'(_0x556baa){const _0x33b068=a125_0x41f1a5,_0x320125=await listSqlQueries(_0x556baa[_0x33b068(0x1b0)],{'sqlCode':_0x556baa['str'](_0x33b068(0x1ae))||undefined,'sqlName':_0x556baa[_0x33b068(0x1bd)](_0x33b068(0x1be))||undefined,'currentPage':_0x556baa[_0x33b068(0x1bb)](_0x33b068(0x1c6)),'pageSize':_0x556baa[_0x33b068(0x1bb)](_0x33b068(0x1b2),0x32)}),_0x5f2ec2=_0x556baa[_0x33b068(0x1bc)]('verbose'),_0x587fc2=_0x320125[_0x33b068(0x1ba)]??[],_0x4710fc=_0x320125[_0x33b068(0x1ce)]?.[_0x33b068(0x1c8)]??_0x587fc2['length'];let _0x3f26a2;return _0x5f2ec2?_0x3f26a2=_0x587fc2:_0x3f26a2=await Promise['all'](_0x587fc2['map'](async _0x3399aa=>{const _0x1499c1=_0x33b068;let _0x1515f7;try{_0x1515f7=_0x3399aa[_0x1499c1(0x1bf)]?await getDbName(_0x556baa[_0x1499c1(0x1b0)],_0x3399aa['dbId']):undefined;}catch{}return{'sqlCode':_0x3399aa[_0x1499c1(0x1cc)],'sqlName':_0x3399aa['sqlName'],'description':_0x3399aa[_0x1499c1(0x1b4)]??'','db':_0x1515f7?_0x1515f7+'\x20('+_0x3399aa[_0x1499c1(0x1bf)]+')':_0x3399aa[_0x1499c1(0x1bf)]??''};})),{'ok':!![],'data':_0x3f26a2,'message':_0x587fc2['length']===0x0?_0x33b068(0x1af):'Found\x20'+_0x587fc2['length']+_0x33b068(0x1c4)+_0x4710fc+').'};}};
1
+ const a126_0x1c20ff=a126_0x4058;(function(_0x20d458,_0x5b62fb){const _0x5872bf=a126_0x4058,_0x540fb6=_0x20d458();while(!![]){try{const _0x224125=parseInt(_0x5872bf(0xc2))/0x1*(parseInt(_0x5872bf(0xc5))/0x2)+parseInt(_0x5872bf(0xc7))/0x3+-parseInt(_0x5872bf(0xae))/0x4+parseInt(_0x5872bf(0xc1))/0x5*(parseInt(_0x5872bf(0xad))/0x6)+-parseInt(_0x5872bf(0xc6))/0x7*(parseInt(_0x5872bf(0xaa))/0x8)+-parseInt(_0x5872bf(0xbc))/0x9*(-parseInt(_0x5872bf(0xbe))/0xa)+-parseInt(_0x5872bf(0xa8))/0xb;if(_0x224125===_0x5b62fb)break;else _0x540fb6['push'](_0x540fb6['shift']());}catch(_0x3cb37a){_0x540fb6['push'](_0x540fb6['shift']());}}}(a126_0x2c92,0x1ec03));import{listSqlQueries}from'../../core/api-client.js';import{getDbName}from'../../core/db-resolver.js';import{SQLCODE_FLAG_OPTIONAL}from'../../commands/common/flags.js';export const sqlList={'service':a126_0x1c20ff(0xbf),'command':a126_0x1c20ff(0xc4),'description':a126_0x1c20ff(0xba),'risk':a126_0x1c20ff(0xb0),'flags':[SQLCODE_FLAG_OPTIONAL,{'name':a126_0x1c20ff(0xac),'type':a126_0x1c20ff(0xc9),'description':a126_0x1c20ff(0xb8)},{'name':'page','type':a126_0x1c20ff(0xaf),'description':'Page\x20number','default':0x1},{'name':a126_0x1c20ff(0xc0),'type':'number','description':a126_0x1c20ff(0xb5)},{'name':a126_0x1c20ff(0xcb),'type':a126_0x1c20ff(0xb9),'description':a126_0x1c20ff(0xb6)}],async 'execute'(_0x58c9cf){const _0x34b13d=a126_0x1c20ff,_0x191131=await listSqlQueries(_0x58c9cf['appCode'],{'sqlCode':_0x58c9cf['str'](_0x34b13d(0xbb))||undefined,'sqlName':_0x58c9cf[_0x34b13d(0xca)]('name')||undefined,'currentPage':_0x58c9cf[_0x34b13d(0xb1)]('page'),'pageSize':_0x58c9cf[_0x34b13d(0xb1)](_0x34b13d(0xc0),0x32)}),_0x3e8876=_0x58c9cf['bool'](_0x34b13d(0xcb)),_0x1bf02c=_0x191131['tableData']??[],_0x88ed23=_0x191131[_0x34b13d(0xab)]?.[_0x34b13d(0xa9)]??_0x1bf02c['length'];let _0x463951;return _0x3e8876?_0x463951=_0x1bf02c:_0x463951=await Promise['all'](_0x1bf02c[_0x34b13d(0xb3)](async _0x113f2f=>{const _0x48215e=_0x34b13d;let _0x5bdc38;try{_0x5bdc38=_0x113f2f[_0x48215e(0xc8)]?await getDbName(_0x58c9cf['appCode'],_0x113f2f[_0x48215e(0xc8)]):undefined;}catch{}return{'sqlCode':_0x113f2f[_0x48215e(0xb2)],'sqlName':_0x113f2f['sqlName'],'description':_0x113f2f[_0x48215e(0xb7)]??'','db':_0x5bdc38?_0x5bdc38+'\x20('+_0x113f2f[_0x48215e(0xc8)]+')':_0x113f2f[_0x48215e(0xc8)]??''};})),{'ok':!![],'data':_0x463951,'message':_0x1bf02c[_0x34b13d(0xb4)]===0x0?'No\x20custom\x20SQL\x20queries\x20found.':_0x34b13d(0xc3)+_0x1bf02c['length']+_0x34b13d(0xbd)+_0x88ed23+').'};}};function a126_0x4058(_0x3fbf9c,_0x11aa4c){_0x3fbf9c=_0x3fbf9c-0xa8;const _0x2c9262=a126_0x2c92();let _0x4058d5=_0x2c9262[_0x3fbf9c];return _0x4058d5;}function a126_0x2c92(){const _0x1c0d80=['name','318qVzpvE','979076zLgSob','number','read','num','sqlCode','map','length','Page\x20size','Return\x20full\x20SQL\x20query\x20objects\x20including\x20parameters\x20and\x20SQL\x20content','description','Filter\x20by\x20SQL\x20name','boolean','List\x20custom\x20SQL\x20queries','sqlcode','198myTgtN','\x20SQL\x20queries\x20(total:\x20','112940SVosmM','sql','pagesize','12135iaoDal','11cwKlPL','Found\x20','list','31810JRSpwv','721mwuhyu','563079tAJKdG','dbId','string','str','verbose','3915362NiUnAY','totalCount','1016fgSFFL','paging'];a126_0x2c92=function(){return _0x1c0d80;};return a126_0x2c92();}
@@ -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_0x3e9caa=a127_0x53a8;(function(_0x55f4bc,_0x112f41){const _0x1e76f4=a127_0x53a8,_0x2741a5=_0x55f4bc();while(!![]){try{const _0x2809b6=parseInt(_0x1e76f4(0x1cc))/0x1*(parseInt(_0x1e76f4(0x1c7))/0x2)+-parseInt(_0x1e76f4(0x1c2))/0x3*(parseInt(_0x1e76f4(0x1c0))/0x4)+-parseInt(_0x1e76f4(0x1db))/0x5+-parseInt(_0x1e76f4(0x1f6))/0x6*(-parseInt(_0x1e76f4(0x1f1))/0x7)+-parseInt(_0x1e76f4(0x1cb))/0x8+-parseInt(_0x1e76f4(0x1ce))/0x9*(-parseInt(_0x1e76f4(0x1f8))/0xa)+-parseInt(_0x1e76f4(0x1e4))/0xb;if(_0x2809b6===_0x112f41)break;else _0x2741a5['push'](_0x2741a5['shift']());}catch(_0x596586){_0x2741a5['push'](_0x2741a5['shift']());}}}(a127_0x2b4f,0xb68c7));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';function a127_0x2b4f(){const _0x3b827e=['replace','No\x20remote\x20SQL\x20queries\x20matched.','lockFilePath','write','6800025VDvoTX','conflict','\x20written,\x20','utf8','sqlName','description','sqlContent','Pull\x20remote\x20SQL\x20queries\x20to\x20local\x20.rabetbase/sql/','Force\x20pull\x20cancelled.','8335184RGKfsv','filter','Force\x20pull\x20will\x20overwrite\x20local\x20SQL\x20that\x20differs\x20from\x20remote.','Would\x20pull\x20','sqlRoot','sqlcode','name','\x20skipped,\x20','catch','local\x20differs\x20from\x20remote','string','Filter\x20by\x20SQL\x20display\x20name','sqls','278803MVdJzz','boolean','local\x20differs\x20from\x20remote\x20(use\x20--force\x20to\x20overwrite)','Pull\x20complete:\x20','toISOString','156cxgDVg','dbId','14500820QUCmsl','pull','str','push','sqlCode','sql','apps','test','47180BbHUzp','lastSync','66dgdeos','unchanged','length','\x20SQL\x20file(s)\x20into\x20','POST','81188lLybTQ','would_pull','\x20failed','Force\x20overwrite\x20local\x20unsynced\x20changes','5277488gSTSgC','32HrlmdF','sqlRootDir','9HmvtyG','path','mybatisXml','split','force','cancelled','/smartapi/custom/queryUserCustomSqlList\x20+\x20/smartapi/custom/getUserCustomSql','tableData','appCode'];a127_0x2b4f=function(){return _0x3b827e;};return a127_0x2b4f();}import{computeSqlContentHash}from'../../core/sql-sync/hash.js';function a127_0x53a8(_0x2839d9,_0x429833){_0x2839d9=_0x2839d9-0x1bb;const _0x2b4fb9=a127_0x2b4f();let _0x53a8ca=_0x2b4fb9[_0x2839d9];return _0x53a8ca;}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(_0x266ffd,_0x7eae3){const _0x700e43=a127_0x53a8,_0x5388d9=[];let _0x3358cd=0x1;while(!![]){const _0x244dde=await listSqlQueries(_0x266ffd,{'currentPage':_0x3358cd,'pageSize':PAGE_SIZE,'sqlCode':_0x7eae3['sqlCode'],'sqlName':_0x7eae3[_0x700e43(0x1df)]}),_0x494768=_0x244dde[_0x700e43(0x1d5)]??[];_0x5388d9[_0x700e43(0x1bb)](..._0x494768);if(_0x494768[_0x700e43(0x1c4)]===0x0)break;const _0x12a95b=_0x244dde['paging']?.['totalCount'];if(_0x12a95b!=null?_0x5388d9[_0x700e43(0x1c4)]>=_0x12a95b:_0x494768[_0x700e43(0x1c4)]<PAGE_SIZE)break;_0x3358cd++;}return _0x5388d9;}async function ensureSqlContent(_0x174791){const _0x508cd6=a127_0x53a8;if(_0x174791['sqlContent']!=null&&String(_0x174791[_0x508cd6(0x1e1)])['length']>0x0)return _0x174791;return getSqlQueryDetail(_0x174791[_0x508cd6(0x1bc)]);}export const sqlPull={'service':a127_0x3e9caa(0x1bd),'command':a127_0x3e9caa(0x1f9),'description':a127_0x3e9caa(0x1e2),'risk':a127_0x3e9caa(0x1da),'flags':[SQLCODE_FLAG_OPTIONAL,{'name':a127_0x3e9caa(0x1ea),'type':a127_0x3e9caa(0x1ee),'description':a127_0x3e9caa(0x1ef)},{'name':a127_0x3e9caa(0x1d2),'type':a127_0x3e9caa(0x1f2),'description':a127_0x3e9caa(0x1ca)}],async 'dryRun'(_0x3153cc){const _0x33ed81=a127_0x3e9caa,_0x15ef9b=loadSqlProjectConfig(_0x3153cc[_0x33ed81(0x1d6)]),_0x2ad256=await readSqlLockFile(_0x15ef9b[_0x33ed81(0x1d9)]),{appLock:_0x55974d}=ensureSqlLockScope(_0x2ad256??createEmptySqlLock(),_0x15ef9b[_0x33ed81(0x1d6)],_0x15ef9b[_0x33ed81(0x1e8)],_0x33ed81(0x1f9)),_0x2ef500=await fetchAllSqlQueries(_0x3153cc[_0x33ed81(0x1d6)],{'sqlCode':_0x3153cc['str']('sqlcode')||undefined,'sqlName':_0x3153cc[_0x33ed81(0x1fa)](_0x33ed81(0x1ea))||undefined}),_0x1a83f8=[];for(const _0x5966fc of _0x2ef500){const _0x517394=await ensureSqlContent(_0x5966fc),_0x599a9e=ensureRemoteSqlContent(_0x517394),_0x52a589=detectModeFromSql(_0x517394),_0x188f53=_0x517394[_0x33ed81(0x1f7)]?await getDbName(_0x3153cc['appCode'],Number(_0x517394[_0x33ed81(0x1f7)]))[_0x33ed81(0x1ec)](()=>undefined):undefined,_0x547ad3=buildLocalSqlFileContent({'sqlCode':_0x517394[_0x33ed81(0x1bc)],'sqlName':_0x517394[_0x33ed81(0x1df)],'dbId':_0x517394[_0x33ed81(0x1f7)]},_0x599a9e,{'dbName':_0x188f53,'mode':_0x52a589,'syncedAt':new Date()[_0x33ed81(0x1f5)](),'description':_0x517394['description']}),_0x51d9dc=buildSqlLockEntry(_0x517394,_0x599a9e,'',{'dbName':_0x188f53}),_0x15fcf4=resolveLocalSqlFilePath(_0x15ef9b,_0x517394['sqlCode'],_0x51d9dc);let _0x26e3c0=_0x33ed81(0x1c8),_0x475af8;if(await fileExists(_0x15fcf4)){const _0x45eb57=await readFile(_0x15fcf4,_0x33ed81(0x1de));isEquivalentPulledSqlFile(_0x45eb57,_0x547ad3,_0x52a589)?(_0x26e3c0='skipped',_0x475af8=_0x33ed81(0x1c3)):(_0x26e3c0=_0x33ed81(0x1dc),_0x475af8=_0x33ed81(0x1f3));}_0x1a83f8[_0x33ed81(0x1bb)]({'sqlCode':_0x517394['sqlCode'],'sqlName':_0x517394[_0x33ed81(0x1df)],'filePath':_0x15fcf4,'status':_0x26e3c0,'reason':_0x475af8});}return{'method':_0x33ed81(0x1c6),'url':_0x33ed81(0x1d4),'body':{'appCode':_0x3153cc['appCode'],'sqlCode':_0x3153cc[_0x33ed81(0x1fa)](_0x33ed81(0x1e9))||null,'sqlName':_0x3153cc[_0x33ed81(0x1fa)]('name')||null,'files':_0x1a83f8},'description':_0x33ed81(0x1e7)+_0x1a83f8['length']+_0x33ed81(0x1c5)+_0x15ef9b[_0x33ed81(0x1cd)]};},async 'execute'(_0x5c8dcb){const _0x6f6ec2=a127_0x3e9caa,_0x48ada9=loadSqlProjectConfig(_0x5c8dcb[_0x6f6ec2(0x1d6)]),_0x56418e=await readSqlLockFile(_0x48ada9[_0x6f6ec2(0x1d9)]),{lockData:_0x18ffa3,appLock:_0x28db20}=ensureSqlLockScope(_0x56418e??createEmptySqlLock(),_0x48ada9[_0x6f6ec2(0x1d6)],_0x48ada9[_0x6f6ec2(0x1e8)],_0x6f6ec2(0x1f9)),_0x5c0da4=_0x5c8dcb['bool'](_0x6f6ec2(0x1d2)),_0x262cd2=await fetchAllSqlQueries(_0x5c8dcb[_0x6f6ec2(0x1d6)],{'sqlCode':_0x5c8dcb[_0x6f6ec2(0x1fa)](_0x6f6ec2(0x1e9))||undefined,'sqlName':_0x5c8dcb['str'](_0x6f6ec2(0x1ea))||undefined});if(_0x262cd2[_0x6f6ec2(0x1c4)]===0x0)return{'ok':!![],'data':{'pulled':[],'skipped':[],'failed':[]},'message':_0x6f6ec2(0x1d8)};const _0x4e8e9e=[],_0x31d374=[];for(const _0x245f33 of _0x262cd2){try{_0x4e8e9e[_0x6f6ec2(0x1bb)](await ensureSqlContent(_0x245f33));}catch(_0x437dad){_0x31d374[_0x6f6ec2(0x1bb)]({'sqlCode':_0x245f33[_0x6f6ec2(0x1bc)],'error':_0x437dad instanceof Error?_0x437dad['message']:String(_0x437dad)});}}if(_0x5c0da4&&!_0x5c8dcb['nonInteractive']){let _0x33ccad=![];for(const _0x2c3130 of _0x4e8e9e){const _0x4d37ea=detectModeFromSql(_0x2c3130),_0x477190=_0x2c3130[_0x6f6ec2(0x1f7)]?await getDbName(_0x5c8dcb['appCode'],Number(_0x2c3130[_0x6f6ec2(0x1f7)]))['catch'](()=>undefined):undefined,_0x2e25f1=buildLocalSqlFileContent({'sqlCode':_0x2c3130['sqlCode'],'sqlName':_0x2c3130[_0x6f6ec2(0x1df)],'dbId':_0x2c3130['dbId']},ensureRemoteSqlContent(_0x2c3130),{'dbName':_0x477190,'mode':_0x4d37ea,'syncedAt':new Date()[_0x6f6ec2(0x1f5)](),'description':_0x2c3130['description']}),_0x48a823=resolveLocalSqlFilePath(_0x48ada9,_0x2c3130[_0x6f6ec2(0x1bc)],buildSqlLockEntry(_0x2c3130,ensureRemoteSqlContent(_0x2c3130),'',{'dbName':_0x477190}));if(await fileExists(_0x48a823)){const _0x16e0ef=await readFile(_0x48a823,'utf8');if(!isEquivalentPulledSqlFile(_0x16e0ef,_0x2e25f1,_0x4d37ea)){_0x33ccad=!![];break;}}}if(_0x33ccad){const _0x456115=await confirmForceOverwrite(_0x6f6ec2(0x1e6));if(!_0x456115)throw CliErrors[_0x6f6ec2(0x1d3)](_0x6f6ec2(0x1e3));}}const _0x259c91=cloneSqlLockData(_0x18ffa3),_0x3f37ae=_0x259c91[_0x6f6ec2(0x1be)][_0x48ada9[_0x6f6ec2(0x1d6)]],_0x551c0d=[],_0x24eafc=[];for(const _0x3ab526 of _0x4e8e9e){const _0x3a920e=_0x3f37ae[_0x6f6ec2(0x1f0)][_0x3ab526['sqlCode']],_0x171916=ensureRemoteSqlContent(_0x3ab526),_0x325ac4=detectModeFromSql(_0x3ab526),_0x56855b=_0x3ab526[_0x6f6ec2(0x1f7)]?await getDbName(_0x5c8dcb[_0x6f6ec2(0x1d6)],Number(_0x3ab526[_0x6f6ec2(0x1f7)]))[_0x6f6ec2(0x1ec)](()=>undefined):undefined,_0x2ac301=buildLocalSqlFileContent({'sqlCode':_0x3ab526[_0x6f6ec2(0x1bc)],'sqlName':_0x3ab526[_0x6f6ec2(0x1df)],'dbId':_0x3ab526['dbId']},_0x171916,{'dbName':_0x56855b,'mode':_0x325ac4,'syncedAt':new Date()[_0x6f6ec2(0x1f5)](),'description':_0x3ab526[_0x6f6ec2(0x1e0)]}),_0x16e6ed=buildSqlLockEntry(_0x3ab526,_0x171916,computeSqlContentHash(_0x2ac301),{'dbName':_0x56855b}),_0x84b0b7=_0x16e6ed['path'],_0x11cef7=join(_0x48ada9[_0x6f6ec2(0x1cd)],_0x84b0b7);try{if(await fileExists(_0x11cef7)){const _0x59c329=await readFile(_0x11cef7,_0x6f6ec2(0x1de));if(isEquivalentPulledSqlFile(_0x59c329,_0x2ac301,_0x325ac4)){_0x24eafc[_0x6f6ec2(0x1bb)]({'sqlCode':_0x3ab526['sqlCode'],'reason':'unchanged'}),_0x3f37ae[_0x6f6ec2(0x1f0)][_0x3ab526['sqlCode']]={..._0x16e6ed,'hash':computeSqlContentHash(_0x59c329),'path':_0x84b0b7};continue;}if(!_0x5c0da4){_0x24eafc[_0x6f6ec2(0x1bb)]({'sqlCode':_0x3ab526[_0x6f6ec2(0x1bc)],'reason':_0x6f6ec2(0x1ed)});continue;}}const _0x5863b3=_0x3a920e?.[_0x6f6ec2(0x1cf)]?join(_0x48ada9['sqlRootDir'],_0x3a920e[_0x6f6ec2(0x1cf)]):undefined;_0x5863b3&&_0x5863b3!==_0x11cef7&&await fileExists(_0x5863b3)&&await rm(_0x5863b3,{'force':!![]}),await ensureParentDirectory(_0x11cef7),await writeFile(_0x11cef7,_0x2ac301,_0x6f6ec2(0x1de)),_0x3f37ae[_0x6f6ec2(0x1f0)][_0x3ab526[_0x6f6ec2(0x1bc)]]={..._0x16e6ed,'path':_0x84b0b7},_0x551c0d[_0x6f6ec2(0x1bb)]({'sqlCode':_0x3ab526[_0x6f6ec2(0x1bc)],'filePath':_0x11cef7});}catch(_0x4bee49){_0x31d374[_0x6f6ec2(0x1bb)]({'sqlCode':_0x3ab526[_0x6f6ec2(0x1bc)],'error':_0x4bee49 instanceof Error?_0x4bee49['message']:String(_0x4bee49)});}}return _0x3f37ae[_0x6f6ec2(0x1c1)]=new Date()['toISOString'](),await writeSqlLockFile(_0x48ada9['lockFilePath'],_0x259c91),{'ok':_0x31d374[_0x6f6ec2(0x1c4)]===0x0,'data':{'pulled':_0x551c0d,'skipped':_0x24eafc,'failed':_0x31d374},'message':_0x6f6ec2(0x1f4)+_0x551c0d['length']+_0x6f6ec2(0x1dd)+_0x24eafc[_0x6f6ec2(0x1c4)]+_0x6f6ec2(0x1eb)+_0x31d374['length']+_0x6f6ec2(0x1c9)};}};function detectModeFromSql(_0x2dd021){const _0x36bd7c=a127_0x3e9caa,_0x4212d7=ensureRemoteSqlContent(_0x2dd021),_0x258af5=stripLocalSqlMetadata(_0x4212d7,_0x36bd7c(0x1d0))['trimStart']();if(/^<(select|insert|update|delete)\b/i['test'](_0x258af5))return _0x36bd7c(0x1d0);return _0x36bd7c(0x1bd);}function isEquivalentPulledSqlFile(_0xb64ea8,_0x419671,_0x77316c){return normalizePullComparableContent(_0xb64ea8,_0x77316c)===normalizePullComparableContent(_0x419671,_0x77316c);}function normalizePullComparableContent(_0xdfcfc1,_0x4fce48){const _0x6122fb=a127_0x3e9caa,_0x3db615=_0xdfcfc1[_0x6122fb(0x1d7)](/\r\n/g,'\x0a')[_0x6122fb(0x1d1)]('\x0a'),_0x411886=_0x3db615[_0x6122fb(0x1e5)](_0x4e4600=>!isSyncedAtMetadataLine(_0x4e4600,_0x4fce48));return _0x411886['join']('\x0a');}function isSyncedAtMetadataLine(_0x4e749b,_0x16baa1){const _0x19c144=a127_0x3e9caa;if(_0x16baa1===_0x19c144(0x1d0))return/^\s*<!--\s*@lovrabet\.syncedAt:/[_0x19c144(0x1bf)](_0x4e749b);return/^\s*--\s*@lovrabet\.syncedAt:/[_0x19c144(0x1bf)](_0x4e749b);}
@@ -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_0x5a0159=a128_0x2cbc;(function(_0x541e3d,_0x543f84){const _0x3e1442=a128_0x2cbc,_0x48fc03=_0x541e3d();while(!![]){try{const _0x23b555=parseInt(_0x3e1442(0x133))/0x1*(parseInt(_0x3e1442(0x131))/0x2)+parseInt(_0x3e1442(0x125))/0x3*(parseInt(_0x3e1442(0x138))/0x4)+parseInt(_0x3e1442(0x121))/0x5+parseInt(_0x3e1442(0x11f))/0x6*(-parseInt(_0x3e1442(0x122))/0x7)+parseInt(_0x3e1442(0xfd))/0x8*(-parseInt(_0x3e1442(0x12f))/0x9)+-parseInt(_0x3e1442(0x100))/0xa+-parseInt(_0x3e1442(0x132))/0xb*(-parseInt(_0x3e1442(0x10a))/0xc);if(_0x23b555===_0x543f84)break;else _0x48fc03['push'](_0x48fc03['shift']());}catch(_0x517ea9){_0x48fc03['push'](_0x48fc03['shift']());}}}(a128_0x3b26,0xdfae5));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_0x3b26(){const _0x330e21=['hash','high-risk-write','Force\x20push\x20even\x20if\x20local\x20hash\x20matches\x20lock','toISOString','catch','push','Push\x20complete:\x20','\x20skipped,\x20','bool','startsWith','sqlcode','lockFilePath','sqlConfig','unchanged','sql','1111170puCbsR','projectRoot','1350720tQyKaP','14ZtkPzx','POST','path','54zalKZo','\x20SQL\x20file(s)','sqls','sqlName','mode','\x20failed','lastSync','dbName','filter','remoteId','1063467guXiPc','length','94746aYWcAW','11CmoUTo','1xgHLzI','Local\x20directory\x20\x22','local\x20SQL\x20is\x20not\x20tracked\x20by\x20sql.lock.json;\x20use\x20`rabetbase\x20sql\x20create`\x20or\x20`rabetbase\x20sql\x20pull`\x20first','Push\x20local\x20SQL\x20files\x20to\x20remote','/smartapi/custom/updateUserCustomSql','361740kGslCx','relativePath','str','message','16WUpAvg','Would\x20push\x20','validation','14869640auEhEo','No\x20local\x20SQL\x20files\x20found.','No\x20database\x20matches\x20local\x20directory\x20\x22','Local\x20SQL\x20not\x20found:\x20','sqlRootDir','utf8','exec','sqlRoot','map','appCode','12774360VaueNe','boolean','force','sqlCode','filePath','dbId'];a128_0x3b26=function(){return _0x330e21;};return a128_0x3b26();}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 a128_0x2cbc(_0x55d1e4,_0x5e6989){_0x55d1e4=_0x55d1e4-0xfc;const _0x3b26d7=a128_0x3b26();let _0x2cbcb1=_0x3b26d7[_0x55d1e4];return _0x2cbcb1;}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(_0x4b8099,_0x53eea5,_0x590845){const _0x46f830=a128_0x2cbc,_0x55ac80=await scanLocalSqlQueries(_0x4b8099),_0x333b1b=new Map();for(const _0xd1bce3 of _0x55ac80){if(_0x590845&&_0xd1bce3[_0x46f830(0x10d)]!==_0x590845)continue;const _0x225338=_0x333b1b['get'](_0xd1bce3[_0x46f830(0x10d)])??[];_0x225338[_0x46f830(0x115)](_0xd1bce3),_0x333b1b['set'](_0xd1bce3[_0x46f830(0x10d)],_0x225338);}if(_0x590845&&!_0x333b1b['has'](_0x590845))throw CliErrors[_0x46f830(0xff)](_0x46f830(0x103)+_0x590845);const _0x54771a=[];for(const [_0x1f20f9,_0x5d090d]of _0x333b1b['entries']()){if(_0x5d090d[_0x46f830(0x130)]===0x1){_0x54771a[_0x46f830(0x115)](_0x5d090d[0x0]);continue;}const _0x275533=_0x53eea5[_0x46f830(0x127)][_0x1f20f9],_0x39487f=_0x275533?.[_0x46f830(0x124)],_0x29219f=_0x39487f?_0x5d090d['filter'](_0x4c422a=>_0x4c422a[_0x46f830(0x139)]!==_0x39487f):_0x5d090d;if(_0x275533&&_0x29219f[_0x46f830(0x130)]===0x1){_0x54771a[_0x46f830(0x115)](_0x29219f[0x0]);continue;}throw CliErrors[_0x46f830(0xff)]('Multiple\x20local\x20SQL\x20files\x20found\x20for\x20sqlCode\x20'+_0x1f20f9+'.\x20Keep\x20only\x20one\x20file\x20under\x20its\x20sqlCode\x20directory\x20before\x20pushing.');}return _0x54771a;}export const sqlPush={'service':a128_0x5a0159(0x11e),'command':a128_0x5a0159(0x115),'description':a128_0x5a0159(0x136),'risk':a128_0x5a0159(0x111),'flags':[SQLCODE_FLAG_OPTIONAL,{'name':a128_0x5a0159(0x10c),'type':a128_0x5a0159(0x10b),'description':a128_0x5a0159(0x112)}],async 'dryRun'(_0x294ee3){const _0x315ea0=a128_0x5a0159,_0x557716=loadSqlProjectConfig(_0x294ee3[_0x315ea0(0x109)]),_0x545209=await readSqlLockFile(_0x557716[_0x315ea0(0x11b)]),{appLock:_0x37d6de}=ensureSqlLockScope(_0x545209??createEmptySqlLock(),_0x294ee3[_0x315ea0(0x109)],_0x557716[_0x315ea0(0x107)],'push'),_0x503990=await getTargetSqlQueries(_0x557716,_0x37d6de,_0x294ee3[_0x315ea0(0x13a)](_0x315ea0(0x11a))||undefined),_0x4a5745=[];for(const _0x4294a0 of _0x503990){const _0x50aa5e=await computeSqlFileHash(_0x4294a0['filePath']),_0x291fdd=_0x37d6de[_0x315ea0(0x127)][_0x4294a0['sqlCode']],_0x441652=!!_0x291fdd&&(_0x291fdd[_0x315ea0(0x124)]!==_0x4294a0[_0x315ea0(0x139)]||!!_0x4294a0[_0x315ea0(0x128)]&&_0x291fdd['sqlName']!==_0x4294a0[_0x315ea0(0x128)]);if(!_0x294ee3[_0x315ea0(0x118)](_0x315ea0(0x10c))&&_0x291fdd&&_0x291fdd[_0x315ea0(0x110)]===_0x50aa5e&&!_0x441652)continue;_0x4a5745['push'](_0x4294a0[_0x315ea0(0x10d)]);}return{'method':_0x315ea0(0x123),'url':_0x315ea0(0x137),'body':{'sqlCodes':_0x4a5745,'appCode':_0x294ee3[_0x315ea0(0x109)]},'description':_0x315ea0(0xfe)+_0x4a5745[_0x315ea0(0x130)]+_0x315ea0(0x126)};},async 'execute'(_0x68f184){const _0x46a8dd=a128_0x5a0159,_0x4c14f6=loadSqlProjectConfig(_0x68f184[_0x46a8dd(0x109)]),_0x3c5ac0=await readSqlLockFile(_0x4c14f6[_0x46a8dd(0x11b)]),{lockData:_0x3b17b4,appLock:_0x26d1b2}=ensureSqlLockScope(_0x3c5ac0??createEmptySqlLock(),_0x68f184[_0x46a8dd(0x109)],_0x4c14f6[_0x46a8dd(0x107)],_0x46a8dd(0x115)),_0x4422c3=await getTargetSqlQueries(_0x4c14f6,_0x26d1b2,_0x68f184[_0x46a8dd(0x13a)](_0x46a8dd(0x11a))||undefined);if(_0x4422c3[_0x46a8dd(0x130)]===0x0)return{'ok':!![],'data':{'pushed':[],'skipped':[],'failed':[]},'message':_0x46a8dd(0x101)};const _0x2fd888=[],_0x45803c=[],_0x268713=[];for(const _0x5df578 of _0x4422c3){const _0x89599f=_0x26d1b2[_0x46a8dd(0x127)][_0x5df578['sqlCode']];if(!_0x89599f){_0x268713[_0x46a8dd(0x115)]({'sqlCode':_0x5df578[_0x46a8dd(0x10d)],'error':_0x46a8dd(0x135)});continue;}try{const _0x2b887f=await computeSqlFileHash(_0x5df578[_0x46a8dd(0x10e)]),_0x35c7dc=_0x89599f[_0x46a8dd(0x124)]!==_0x5df578[_0x46a8dd(0x139)]||!!_0x5df578[_0x46a8dd(0x128)]&&_0x89599f[_0x46a8dd(0x128)]!==_0x5df578[_0x46a8dd(0x128)];if(!_0x68f184[_0x46a8dd(0x118)](_0x46a8dd(0x10c))&&_0x89599f[_0x46a8dd(0x110)]===_0x2b887f&&!_0x35c7dc){_0x45803c[_0x46a8dd(0x115)]({'sqlCode':_0x5df578[_0x46a8dd(0x10d)],'reason':_0x46a8dd(0x11d)});continue;}if(_0x89599f['version']==null){_0x268713['push']({'sqlCode':_0x5df578[_0x46a8dd(0x10d)],'error':'missing\x20remote\x20version;\x20run\x20`rabetbase\x20sql\x20pull`\x20to\x20refresh\x20version\x20info\x20first'});continue;}const _0x4c63a4=await readFile(_0x5df578[_0x46a8dd(0x10e)],_0x46a8dd(0x105)),_0x58b5e7=stripLocalSqlMetadata(_0x4c63a4,_0x5df578[_0x46a8dd(0x129)]),_0x403b33=_0x5df578[_0x46a8dd(0x128)]||_0x89599f['sqlName'],_0x134146=await resolveTargetDbBinding(_0x68f184[_0x46a8dd(0x109)],_0x5df578,_0x89599f),_0x7f2332=await updateSqlQuery({'id':_0x89599f[_0x46a8dd(0x12e)],'appCode':_0x68f184['appCode'],'sqlCode':_0x5df578[_0x46a8dd(0x10d)],'sqlName':_0x403b33,'dbId':_0x134146[_0x46a8dd(0x10f)],'version':_0x89599f['version'],'sqlContent':_0x58b5e7,'sqlConfig':_0x89599f[_0x46a8dd(0x11c)]??undefined}),_0x31c358=_0x7f2332['dbId']?await getDbName(_0x68f184[_0x46a8dd(0x109)],Number(_0x7f2332[_0x46a8dd(0x10f)]))[_0x46a8dd(0x114)](()=>_0x134146[_0x46a8dd(0x12c)]):_0x134146['dbName'];_0x26d1b2[_0x46a8dd(0x127)][_0x5df578[_0x46a8dd(0x10d)]]={...buildSqlLockEntry(_0x7f2332,_0x58b5e7,_0x2b887f,{'dbName':_0x31c358}),'path':_0x5df578[_0x46a8dd(0x139)],'mode':_0x89599f[_0x46a8dd(0x129)]},await archivePreviousSqlFileIfNeeded(_0x4c14f6,_0x89599f['path'],_0x5df578['relativePath']),_0x2fd888[_0x46a8dd(0x115)]({'sqlCode':_0x5df578[_0x46a8dd(0x10d)],'remoteId':_0x89599f['remoteId']});}catch(_0x5d79d4){_0x268713['push']({'sqlCode':_0x5df578[_0x46a8dd(0x10d)],'error':_0x5d79d4 instanceof Error?_0x5d79d4[_0x46a8dd(0xfc)]:String(_0x5d79d4)});}}return _0x26d1b2[_0x46a8dd(0x12b)]=new Date()[_0x46a8dd(0x113)](),await writeSqlLockFile(_0x4c14f6[_0x46a8dd(0x11b)],_0x3b17b4),{'ok':_0x268713[_0x46a8dd(0x130)]===0x0,'data':{'pushed':_0x2fd888,'skipped':_0x45803c,'failed':_0x268713},'message':_0x46a8dd(0x116)+_0x2fd888['length']+'\x20pushed,\x20'+_0x45803c['length']+_0x46a8dd(0x117)+_0x268713[_0x46a8dd(0x130)]+_0x46a8dd(0x12a)};}};async function archivePreviousSqlFileIfNeeded(_0x3f4892,_0x1755ff,_0x1ebf49){const _0x481551=a128_0x5a0159;if(!_0x1755ff||_0x1755ff===_0x1ebf49)return;const _0x32801e=join(_0x3f4892['sqlRootDir'],_0x1755ff);if(!await fileExists(_0x32801e))return;const _0x2bd998=await moveToTrash(_0x3f4892[_0x481551(0x120)],_0x3f4892['trashDir'],_0x32801e);await cleanupEmptyDirectories(dirname(_0x32801e),_0x3f4892[_0x481551(0x104)]),void _0x2bd998;}async function moveToTrash(_0x76fab7,_0x18f141,_0x5c00dc){const _0x2b47dc=new Date()['toISOString']()['replace'](/[:.]/g,'-'),_0x37e64f=relative(_0x76fab7,_0x5c00dc),_0x448870=join(_0x18f141,_0x2b47dc,_0x37e64f);return await mkdir(dirname(_0x448870),{'recursive':!![]}),await rename(_0x5c00dc,_0x448870),_0x448870;}async function cleanupEmptyDirectories(_0x59264b,_0x236694){const _0x303dd6=a128_0x5a0159;let _0x4a047f=resolve(_0x59264b);const _0x38862d=resolve(_0x236694);while(_0x4a047f[_0x303dd6(0x119)](''+_0x38862d+sep)||_0x4a047f===_0x38862d){if(_0x4a047f===_0x38862d)return;try{const _0x25f2be=await readdir(_0x4a047f);if(_0x25f2be[_0x303dd6(0x130)]>0x0)return;await rmdir(_0x4a047f);}catch{return;}_0x4a047f=dirname(_0x4a047f);}}async function resolveTargetDbBinding(_0x3ee260,_0x17b1ac,_0xb1c681){const _0x232d12=a128_0x5a0159,_0x3fea3f=_0x17b1ac['dbDirectory'];if(!_0x3fea3f)return{'dbId':_0xb1c681[_0x232d12(0x10f)],'dbName':_0xb1c681[_0x232d12(0x12c)]};const _0x5e664b=buildDbDirectoryName(_0xb1c681['dbName'],_0xb1c681[_0x232d12(0x10f)]);if(_0x3fea3f===_0x5e664b)return{'dbId':_0xb1c681[_0x232d12(0x10f)],'dbName':_0xb1c681[_0x232d12(0x12c)]};const _0xcee13c=parseExplicitDbDirectory(_0x3fea3f);if(_0xcee13c!=null)return{'dbId':_0xcee13c,'dbName':await getDbName(_0x3ee260,_0xcee13c)[_0x232d12(0x114)](()=>undefined)};const _0x467e9c=await listDatabases(_0x3ee260),_0x1c5233=_0x467e9c[_0x232d12(0x12d)](_0x509890=>buildDbDirectoryName(_0x509890['dbName'],_0x509890['dbId'])===_0x3fea3f);if(_0x1c5233[_0x232d12(0x130)]===0x1)return{'dbId':_0x1c5233[0x0][_0x232d12(0x10f)],'dbName':_0x1c5233[0x0]['dbName']};if(_0x1c5233[_0x232d12(0x130)]===0x0)throw CliErrors[_0x232d12(0xff)](_0x232d12(0x102)+_0x3fea3f+'\x22\x20for\x20sqlCode\x20'+_0x17b1ac[_0x232d12(0x10d)]+'.');const _0x5d0959=_0x1c5233[_0x232d12(0x108)](_0x1f27c0=>_0x1f27c0['dbName']+'\x20('+_0x1f27c0[_0x232d12(0x10f)]+')')['join'](',\x20');throw CliErrors[_0x232d12(0xff)](_0x232d12(0x134)+_0x3fea3f+'\x22\x20matches\x20multiple\x20databases\x20for\x20sqlCode\x20'+_0x17b1ac[_0x232d12(0x10d)]+':\x20'+_0x5d0959);}function parseExplicitDbDirectory(_0x530b66){const _0x2b6ca7=a128_0x5a0159,_0x5b8c59=/^db-(\d+)$/[_0x2b6ca7(0x106)](_0x530b66);if(!_0x5b8c59)return null;const _0xcfc91=Number(_0x5b8c59[0x1]);return Number['isFinite'](_0xcfc91)&&_0xcfc91>0x0?_0xcfc91:null;}
@@ -1 +1 @@
1
- const a128_0x52fe99=a128_0x5170;(function(_0x23bdf3,_0xba4ee1){const _0x988b01=a128_0x5170,_0x525bcd=_0x23bdf3();while(!![]){try{const _0x506809=-parseInt(_0x988b01(0xc8))/0x1+-parseInt(_0x988b01(0xc3))/0x2+-parseInt(_0x988b01(0xc5))/0x3*(-parseInt(_0x988b01(0xd0))/0x4)+-parseInt(_0x988b01(0xd2))/0x5*(-parseInt(_0x988b01(0xda))/0x6)+-parseInt(_0x988b01(0xd5))/0x7*(parseInt(_0x988b01(0xd4))/0x8)+parseInt(_0x988b01(0xd3))/0x9+-parseInt(_0x988b01(0xca))/0xa*(-parseInt(_0x988b01(0xcc))/0xb);if(_0x506809===_0xba4ee1)break;else _0x525bcd['push'](_0x525bcd['shift']());}catch(_0x3a6f57){_0x525bcd['push'](_0x525bcd['shift']());}}}(a128_0x86cd,0x1ffe6));import{CliErrors}from'../../errors.js';import{SQLCODE_FLAG_OPTIONAL}from'../../commands/common/flags.js';function a128_0x5170(_0x4b3a8e,_0x2c1e1e){_0x4b3a8e=_0x4b3a8e-0xc3;const _0x86cdb1=a128_0x86cd();let _0x5170e8=_0x86cdb1[_0x4b3a8e];return _0x5170e8;}const SQL_SAVE_DEPRECATED_HINT=[a128_0x52fe99(0xdb),a128_0x52fe99(0xdc),a128_0x52fe99(0xce)]['join']('\x0a');function a128_0x86cd(){const _0x35c53a=['3qfKgqB','Path\x20to\x20the\x20SQL\x20file','Query\x20description','135830XaCuQX','file','1840UIYtPK','Deprecated:\x20use\x20sql\x20create\x20to\x20create\x20and\x20sql\x20push\x20to\x20update','10758UeTRjZ','save','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`.','string','272980KHlDlU','description','10pbFkqf','500445SSPWxD','596768ItnGRw','21mKmfgJ','Target\x20database\x20—\x20accepts\x20a\x20numeric\x20ID\x20or\x20database\x20name\x20(e.g.\x20ecommerce_db)','sqlname','validation','sql','678732kygyZd','`rabetbase\x20sql\x20save`\x20has\x20been\x20deprecated.','Create\x20new\x20SQL\x20with\x20`rabetbase\x20sql\x20create\x20--name\x20<name>\x20--db-id\x20<id>\x20--mode\x20sql|mybatisXml`.','SQL\x20query\x20display\x20name','78764XPmrYe','write'];a128_0x86cd=function(){return _0x35c53a;};return a128_0x86cd();}export const sqlSave={'service':a128_0x52fe99(0xd9),'command':a128_0x52fe99(0xcd),'description':a128_0x52fe99(0xcb),'risk':a128_0x52fe99(0xc4),'requiresAuth':![],'requiresAppCode':![],'flags':[{'name':a128_0x52fe99(0xc9),'type':'string','required':!![],'description':a128_0x52fe99(0xc6)},SQLCODE_FLAG_OPTIONAL,{'name':a128_0x52fe99(0xd7),'type':a128_0x52fe99(0xcf),'description':a128_0x52fe99(0xdd)},{'name':'db','type':'string','description':a128_0x52fe99(0xd6)},{'name':a128_0x52fe99(0xd1),'type':'string','description':a128_0x52fe99(0xc7)}],async 'validate'(){const _0x546974=a128_0x52fe99;throw CliErrors[_0x546974(0xd8)](SQL_SAVE_DEPRECATED_HINT);},async 'execute'(){const _0x40b44d=a128_0x52fe99;throw CliErrors[_0x40b44d(0xd8)](SQL_SAVE_DEPRECATED_HINT);}};
1
+ function a129_0x38d4(){const _0x40b2ff=['Path\x20to\x20the\x20SQL\x20file','sql','validation','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`.','string','632889cuEKlw','join','SQL\x20query\x20display\x20name','Target\x20database\x20—\x20accepts\x20a\x20numeric\x20ID\x20or\x20database\x20name\x20(e.g.\x20ecommerce_db)','write','173602eheeGv','save','576546tjEWWR','453200AUBEyY','643588sTkFWD','1vSsITT','1926153VTWINw','8WqFPsA','1693531KJgQMX','Create\x20new\x20SQL\x20with\x20`rabetbase\x20sql\x20create\x20--name\x20<name>\x20--db-id\x20<id>\x20--mode\x20sql|mybatisXml`.','sqlname','file'];a129_0x38d4=function(){return _0x40b2ff;};return a129_0x38d4();}const a129_0x553667=a129_0x1ae9;(function(_0x3b24fd,_0xe7180a){const _0x14e1bd=a129_0x1ae9,_0x961674=_0x3b24fd();while(!![]){try{const _0x51497d=-parseInt(_0x14e1bd(0xf1))/0x1*(parseInt(_0x14e1bd(0xec))/0x2)+-parseInt(_0x14e1bd(0xfd))/0x3+parseInt(_0x14e1bd(0xf0))/0x4+-parseInt(_0x14e1bd(0xef))/0x5+-parseInt(_0x14e1bd(0xee))/0x6+parseInt(_0x14e1bd(0xf4))/0x7+parseInt(_0x14e1bd(0xf3))/0x8*(parseInt(_0x14e1bd(0xf2))/0x9);if(_0x51497d===_0xe7180a)break;else _0x961674['push'](_0x961674['shift']());}catch(_0x37c938){_0x961674['push'](_0x961674['shift']());}}}(a129_0x38d4,0x20500));import{CliErrors}from'../../errors.js';function a129_0x1ae9(_0x4dd38c,_0x12c16b){_0x4dd38c=_0x4dd38c-0xeb;const _0x38d449=a129_0x38d4();let _0x1ae986=_0x38d449[_0x4dd38c];return _0x1ae986;}import{SQLCODE_FLAG_OPTIONAL}from'../../commands/common/flags.js';const SQL_SAVE_DEPRECATED_HINT=['`rabetbase\x20sql\x20save`\x20has\x20been\x20deprecated.',a129_0x553667(0xf5),a129_0x553667(0xfb)][a129_0x553667(0xfe)]('\x0a');export const sqlSave={'service':a129_0x553667(0xf9),'command':a129_0x553667(0xed),'description':'Deprecated:\x20use\x20sql\x20create\x20to\x20create\x20and\x20sql\x20push\x20to\x20update','risk':a129_0x553667(0xeb),'requiresAuth':![],'requiresAppCode':![],'flags':[{'name':a129_0x553667(0xf7),'type':a129_0x553667(0xfc),'required':!![],'description':a129_0x553667(0xf8)},SQLCODE_FLAG_OPTIONAL,{'name':a129_0x553667(0xf6),'type':a129_0x553667(0xfc),'description':a129_0x553667(0xff)},{'name':'db','type':a129_0x553667(0xfc),'description':a129_0x553667(0x100)},{'name':'description','type':a129_0x553667(0xfc),'description':'Query\x20description'}],async 'validate'(){const _0xf0a1ce=a129_0x553667;throw CliErrors[_0xf0a1ce(0xfa)](SQL_SAVE_DEPRECATED_HINT);},async 'execute'(){const _0x2986ac=a129_0x553667;throw CliErrors[_0x2986ac(0xfa)](SQL_SAVE_DEPRECATED_HINT);}};
@@ -1 +1 @@
1
- const a129_0x484a9f=a129_0x155c;(function(_0x214955,_0xbe4aa1){const _0x4f8404=a129_0x155c,_0x160c29=_0x214955();while(!![]){try{const _0x493820=-parseInt(_0x4f8404(0xd0))/0x1*(-parseInt(_0x4f8404(0xbb))/0x2)+parseInt(_0x4f8404(0xc9))/0x3*(-parseInt(_0x4f8404(0xdc))/0x4)+parseInt(_0x4f8404(0xca))/0x5*(-parseInt(_0x4f8404(0xd3))/0x6)+parseInt(_0x4f8404(0xc5))/0x7+parseInt(_0x4f8404(0xbc))/0x8*(-parseInt(_0x4f8404(0xb7))/0x9)+parseInt(_0x4f8404(0xb6))/0xa+parseInt(_0x4f8404(0xda))/0xb;if(_0x493820===_0xbe4aa1)break;else _0x160c29['push'](_0x160c29['shift']());}catch(_0x2bc25e){_0x160c29['push'](_0x160c29['shift']());}}}(a129_0x44c6,0xdcc28));import{createInterface}from'node:readline';import{join}from'node:path';function a129_0x44c6(){const _0x2f8c30=['82512xWJtUQ','join','entries','stderr','1479238ZaVnJI','16VOmfBg','.rabetbase/sql','<!--\x20@lovrabet.','sqlRoot','mode','test','description','sqlName','filter','6149080srDqwS','mybatisXml','trim','lastSync','4923VQNwCk','598060fzeJmz','map','--\x20@lovrabet.','length','\x20-->','syncedAt','2zyBGea','stdin','dbId','24kTslqn','dbName','sqlCode','split','push','version','replace','730433ZJbCbw','close','3668ojlHmT','path','trimStart','question','includes','toLowerCase','endsWith','4817320YrvaUQ'];a129_0x44c6=function(){return _0x2f8c30;};return a129_0x44c6();}import{buildDefaultSqlFileName,buildSqlRelativePath,detectSqlMode}from'../../core/sql-sync/utils.js';export const SQL_LOCAL_REL_DIR=a129_0x484a9f(0xbd);export function buildSqlLockEntry(_0x13d3d8,_0x5691e2,_0x1db234,_0x3e19df){const _0x31c9f3=a129_0x484a9f,_0xc6d740=detectSqlMode(_0x5691e2);return{'path':buildSqlRelativePath(_0x13d3d8['sqlCode'],_0x13d3d8[_0x31c9f3(0xc3)],_0x3e19df?.[_0x31c9f3(0xd4)],_0xc6d740,_0x13d3d8['dbId']),'hash':_0x1db234,'remoteId':_0x13d3d8['id'],'version':_0x13d3d8[_0x31c9f3(0xd8)],'dbId':Number(_0x13d3d8[_0x31c9f3(0xd2)]),'dbName':_0x3e19df?.['dbName'],'sqlName':_0x13d3d8[_0x31c9f3(0xc3)],'sqlConfig':_0x13d3d8['sqlConfig']??undefined,'mode':_0xc6d740};}export function cloneSqlLockData(_0x3cb7b8){const _0x273585=a129_0x484a9f;return{'apps':Object['fromEntries'](Object[_0x273585(0xb9)](_0x3cb7b8['apps'])[_0x273585(0xcb)](([_0x3d62ee,_0x24573f])=>[_0x3d62ee,{'sqlRoot':_0x24573f[_0x273585(0xbf)],'lastSync':_0x24573f[_0x273585(0xc8)],'sqls':{..._0x24573f['sqls']}}]))};}export function ensureRemoteSqlContent(_0x3dc8cb){return _0x3dc8cb['sqlContent']??'';}export function buildLocalSqlFileContent(_0x1e2364,_0x2bca9b,_0xf899a5){const _0x41b675=a129_0x484a9f,_0x34bbe2=_0xf899a5?.[_0x41b675(0xc0)]??detectSqlMode(_0x2bca9b),_0x2382c4=stripLocalSqlMetadata(_0x2bca9b,_0x34bbe2)['trim'](),_0x1c3f07=[...buildMetadataHeaderLines({'sqlCode':_0x1e2364['sqlCode'],'sqlName':_0x1e2364[_0x41b675(0xc3)],'dbId':_0x1e2364[_0x41b675(0xd2)],'dbName':_0xf899a5?.[_0x41b675(0xd4)],'mode':_0x34bbe2,'syncedAt':_0xf899a5?.[_0x41b675(0xcf)],'description':_0xf899a5?.[_0x41b675(0xc2)]},_0x34bbe2),'',_0x2382c4],_0x16d8e5=_0x1c3f07[_0x41b675(0xb8)]('\x0a');return _0x16d8e5[_0x41b675(0xb5)]('\x0a')?_0x16d8e5:_0x16d8e5+'\x0a';}export function stripLocalSqlMetadata(_0x3cf8bf,_0x606d9c){const _0x1dbe41=a129_0x484a9f,_0x4f0829=_0x3cf8bf[_0x1dbe41(0xd9)](/\r\n/g,'\x0a')[_0x1dbe41(0xd6)]('\x0a'),_0x361b0d=[];let _0x4a6b92=0x0;if(_0x606d9c===_0x1dbe41(0xc6))while(_0x4a6b92<_0x4f0829[_0x1dbe41(0xcd)]){const _0x37de5c=_0x4f0829[_0x4a6b92]??'';if(/^\s*<!--\s*@lovrabet\./[_0x1dbe41(0xc1)](_0x37de5c)){_0x4a6b92++;continue;}if(_0x37de5c[_0x1dbe41(0xc7)]()===''&&_0x4a6b92>0x0){_0x4a6b92++;continue;}break;}else while(_0x4a6b92<_0x4f0829[_0x1dbe41(0xcd)]){const _0x3e4d54=_0x4f0829[_0x4a6b92]??'';if(/^\s*--\s*@lovrabet\./[_0x1dbe41(0xc1)](_0x3e4d54)){_0x4a6b92++;continue;}if(_0x3e4d54[_0x1dbe41(0xc7)]()===''&&_0x4a6b92>0x0){_0x4a6b92++;continue;}break;}for(;_0x4a6b92<_0x4f0829['length'];_0x4a6b92++){_0x361b0d[_0x1dbe41(0xd7)](_0x4f0829[_0x4a6b92]);}return _0x361b0d[_0x1dbe41(0xb8)]('\x0a')[_0x1dbe41(0xde)]();}export function resolveSqlMode(_0x5a4bb7,_0xa85048){const _0x43dd8c=a129_0x484a9f;if(_0xa85048?.[_0x43dd8c(0xc0)])return _0xa85048[_0x43dd8c(0xc0)];return detectSqlMode(_0x5a4bb7);}export function resolveSqlFileName(_0xb0297e,_0x52e523,_0x3dc013){const _0x52c9f2=a129_0x484a9f;if(_0x3dc013?.['path'])return _0x3dc013[_0x52c9f2(0xdd)];if(_0x3dc013?.['sqlName']||_0x3dc013?.['dbName'])return buildSqlRelativePath(_0xb0297e,_0x3dc013?.[_0x52c9f2(0xc3)],_0x3dc013?.[_0x52c9f2(0xd4)],resolveSqlMode(_0x52e523,_0x3dc013),_0x3dc013?.[_0x52c9f2(0xd2)]);return buildDefaultSqlFileName(_0xb0297e,resolveSqlMode(_0x52e523,_0x3dc013));}export function resolveSqlLocalDir(_0x258aa9,_0xe93bb1){return join(_0x258aa9,SQL_LOCAL_REL_DIR,_0xe93bb1);}function a129_0x155c(_0x58e582,_0x1913ab){_0x58e582=_0x58e582-0xb5;const _0x44c63b=a129_0x44c6();let _0x155cee=_0x44c63b[_0x58e582];return _0x155cee;}export async function confirmForceOverwrite(_0x4f4041){const _0x4f48db=a129_0x484a9f,_0x50565d=createInterface({'input':process[_0x4f48db(0xd1)],'output':process[_0x4f48db(0xba)]}),_0x6f1f3a=await new Promise(_0x593a30=>{const _0x9bea3e=_0x4f48db;_0x50565d[_0x9bea3e(0xdf)](_0x4f4041+'\x20[y/N]\x20',_0x593a30);});return _0x50565d[_0x4f48db(0xdb)](),['y','yes'][_0x4f48db(0xe0)](_0x6f1f3a['trim']()[_0x4f48db(0xe1)]());}export function findSqlLockScope(_0x5acc21,_0x33ca26){return _0x5acc21['apps'][_0x33ca26];}function buildMetadataHeaderLines(_0x2945ed,_0x7dda9d){const _0x532b9e=a129_0x484a9f,_0x4aeefe=[['sqlCode',_0x2945ed[_0x532b9e(0xd5)]],[_0x532b9e(0xc3),_0x2945ed[_0x532b9e(0xc3)]],['dbId',_0x2945ed[_0x532b9e(0xd2)]],['dbName',_0x2945ed['dbName']],[_0x532b9e(0xc0),_0x2945ed[_0x532b9e(0xc0)]],['syncedAt',_0x2945ed['syncedAt']],[_0x532b9e(0xc2),_0x2945ed['description']]];if(_0x7dda9d==='mybatisXml')return _0x4aeefe[_0x532b9e(0xc4)](([,_0x3c04fc])=>_0x3c04fc!==undefined&&_0x3c04fc!==null&&String(_0x3c04fc)[_0x532b9e(0xc7)]()!=='')[_0x532b9e(0xcb)](([_0x12849f,_0x3806d1])=>_0x532b9e(0xbe)+_0x12849f+':\x20'+String(_0x3806d1)+_0x532b9e(0xce));return _0x4aeefe[_0x532b9e(0xc4)](([,_0x418fcd])=>_0x418fcd!==undefined&&_0x418fcd!==null&&String(_0x418fcd)[_0x532b9e(0xc7)]()!=='')['map'](([_0x5091d6,_0x1106a6])=>_0x532b9e(0xcc)+_0x5091d6+':\x20'+String(_0x1106a6));}
1
+ (function(_0x3cbf2a,_0x582904){const _0x2f9d6b=a130_0x2488,_0x9b2bda=_0x3cbf2a();while(!![]){try{const _0x3b75fa=parseInt(_0x2f9d6b(0x1c9))/0x1+parseInt(_0x2f9d6b(0x1bc))/0x2+parseInt(_0x2f9d6b(0x1c7))/0x3+parseInt(_0x2f9d6b(0x1d0))/0x4+-parseInt(_0x2f9d6b(0x1c6))/0x5*(parseInt(_0x2f9d6b(0x1e2))/0x6)+-parseInt(_0x2f9d6b(0x1dc))/0x7+-parseInt(_0x2f9d6b(0x1e7))/0x8*(parseInt(_0x2f9d6b(0x1c3))/0x9);if(_0x3b75fa===_0x582904)break;else _0x9b2bda['push'](_0x9b2bda['shift']());}catch(_0x4cdbf3){_0x9b2bda['push'](_0x9b2bda['shift']());}}}(a130_0x345c,0xdd095));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='.rabetbase/sql';export function buildSqlLockEntry(_0x5e581b,_0x2e0bd6,_0x389852,_0x3cab16){const _0x3ffadf=a130_0x2488,_0x4a5c96=detectSqlMode(_0x2e0bd6);return{'path':buildSqlRelativePath(_0x5e581b[_0x3ffadf(0x1e3)],_0x5e581b[_0x3ffadf(0x1d7)],_0x3cab16?.['dbName'],_0x4a5c96,_0x5e581b[_0x3ffadf(0x1c4)]),'hash':_0x389852,'remoteId':_0x5e581b['id'],'version':_0x5e581b[_0x3ffadf(0x1d3)],'dbId':Number(_0x5e581b[_0x3ffadf(0x1c4)]),'dbName':_0x3cab16?.['dbName'],'sqlName':_0x5e581b[_0x3ffadf(0x1d7)],'sqlConfig':_0x5e581b[_0x3ffadf(0x1e8)]??undefined,'mode':_0x4a5c96};}export function cloneSqlLockData(_0x31512b){const _0x1b5519=a130_0x2488;return{'apps':Object[_0x1b5519(0x1cb)](Object[_0x1b5519(0x1da)](_0x31512b['apps'])[_0x1b5519(0x1ce)](([_0x37d45e,_0x433ec9])=>[_0x37d45e,{'sqlRoot':_0x433ec9[_0x1b5519(0x1c0)],'lastSync':_0x433ec9[_0x1b5519(0x1c8)],'sqls':{..._0x433ec9[_0x1b5519(0x1cc)]}}]))};}export function ensureRemoteSqlContent(_0x1194e7){const _0x2ef8b5=a130_0x2488;return _0x1194e7[_0x2ef8b5(0x1ea)]??'';}export function buildLocalSqlFileContent(_0x5bb338,_0x3262f5,_0x12748f){const _0x4e4c31=a130_0x2488,_0x16cd99=_0x12748f?.[_0x4e4c31(0x1dd)]??detectSqlMode(_0x3262f5),_0x27e9b0=stripLocalSqlMetadata(_0x3262f5,_0x16cd99)[_0x4e4c31(0x1db)](),_0x26efcd=[...buildMetadataHeaderLines({'sqlCode':_0x5bb338[_0x4e4c31(0x1e3)],'sqlName':_0x5bb338[_0x4e4c31(0x1d7)],'dbId':_0x5bb338['dbId'],'dbName':_0x12748f?.[_0x4e4c31(0x1ca)],'mode':_0x16cd99,'syncedAt':_0x12748f?.[_0x4e4c31(0x1d8)],'description':_0x12748f?.[_0x4e4c31(0x1e0)]},_0x16cd99),'',_0x27e9b0],_0x365fac=_0x26efcd[_0x4e4c31(0x1bf)]('\x0a');return _0x365fac[_0x4e4c31(0x1e5)]('\x0a')?_0x365fac:_0x365fac+'\x0a';}export function stripLocalSqlMetadata(_0x136bf4,_0x8cc324){const _0x3dd603=a130_0x2488,_0x365c69=_0x136bf4[_0x3dd603(0x1c2)](/\r\n/g,'\x0a')[_0x3dd603(0x1d1)]('\x0a'),_0x4a7f76=[];let _0x4bf6e8=0x0;if(_0x8cc324===_0x3dd603(0x1e9))while(_0x4bf6e8<_0x365c69[_0x3dd603(0x1d2)]){const _0x255327=_0x365c69[_0x4bf6e8]??'';if(/^\s*<!--\s*@lovrabet\./[_0x3dd603(0x1d9)](_0x255327)){_0x4bf6e8++;continue;}if(_0x255327[_0x3dd603(0x1db)]()===''&&_0x4bf6e8>0x0){_0x4bf6e8++;continue;}break;}else while(_0x4bf6e8<_0x365c69['length']){const _0x567fd9=_0x365c69[_0x4bf6e8]??'';if(/^\s*--\s*@lovrabet\./[_0x3dd603(0x1d9)](_0x567fd9)){_0x4bf6e8++;continue;}if(_0x567fd9[_0x3dd603(0x1db)]()===''&&_0x4bf6e8>0x0){_0x4bf6e8++;continue;}break;}for(;_0x4bf6e8<_0x365c69['length'];_0x4bf6e8++){_0x4a7f76[_0x3dd603(0x1d6)](_0x365c69[_0x4bf6e8]);}return _0x4a7f76[_0x3dd603(0x1bf)]('\x0a')[_0x3dd603(0x1d4)]();}export function resolveSqlMode(_0x54bdf2,_0x58199a){const _0x34072c=a130_0x2488;if(_0x58199a?.[_0x34072c(0x1dd)])return _0x58199a[_0x34072c(0x1dd)];return detectSqlMode(_0x54bdf2);}export function resolveSqlFileName(_0xffa92e,_0x2c4783,_0x519d97){const _0x2612eb=a130_0x2488;if(_0x519d97?.[_0x2612eb(0x1be)])return _0x519d97[_0x2612eb(0x1be)];if(_0x519d97?.[_0x2612eb(0x1d7)]||_0x519d97?.[_0x2612eb(0x1ca)])return buildSqlRelativePath(_0xffa92e,_0x519d97?.[_0x2612eb(0x1d7)],_0x519d97?.['dbName'],resolveSqlMode(_0x2c4783,_0x519d97),_0x519d97?.[_0x2612eb(0x1c4)]);return buildDefaultSqlFileName(_0xffa92e,resolveSqlMode(_0x2c4783,_0x519d97));}function a130_0x345c(){const _0x578530=['yes','push','sqlName','syncedAt','test','entries','trim','10098991wBMRhm','mode','\x20-->','stderr','description','toLowerCase','6AcdiGc','sqlCode','<!--\x20@lovrabet.','endsWith','filter','7156808oGcKHr','sqlConfig','mybatisXml','sqlContent','2691578ZOciWm','stdin','path','join','sqlRoot','apps','replace','18YxClTn','dbId','close','475315mQNdIN','2489796FAtSMH','lastSync','1341223YCyPbH','dbName','fromEntries','sqls','\x20[y/N]\x20','map','includes','2861596xLEqHi','split','length','version','trimStart'];a130_0x345c=function(){return _0x578530;};return a130_0x345c();}export function resolveSqlLocalDir(_0x192345,_0x5d8fba){return join(_0x192345,SQL_LOCAL_REL_DIR,_0x5d8fba);}export async function confirmForceOverwrite(_0x1d62e5){const _0x1c281c=a130_0x2488,_0x2bd498=createInterface({'input':process[_0x1c281c(0x1bd)],'output':process[_0x1c281c(0x1df)]}),_0x1f4cad=await new Promise(_0x2f3cdb=>{const _0x5c2cd1=_0x1c281c;_0x2bd498['question'](_0x1d62e5+_0x5c2cd1(0x1cd),_0x2f3cdb);});return _0x2bd498[_0x1c281c(0x1c5)](),['y',_0x1c281c(0x1d5)][_0x1c281c(0x1cf)](_0x1f4cad[_0x1c281c(0x1db)]()[_0x1c281c(0x1e1)]());}function a130_0x2488(_0x510550,_0x9e65b){_0x510550=_0x510550-0x1bc;const _0x345c28=a130_0x345c();let _0x2488fe=_0x345c28[_0x510550];return _0x2488fe;}export function findSqlLockScope(_0x4d4b23,_0x3d5415){const _0x3c0b3a=a130_0x2488;return _0x4d4b23[_0x3c0b3a(0x1c1)][_0x3d5415];}function buildMetadataHeaderLines(_0x273e2f,_0x177620){const _0x226082=a130_0x2488,_0xb72681=[[_0x226082(0x1e3),_0x273e2f['sqlCode']],[_0x226082(0x1d7),_0x273e2f['sqlName']],[_0x226082(0x1c4),_0x273e2f[_0x226082(0x1c4)]],[_0x226082(0x1ca),_0x273e2f[_0x226082(0x1ca)]],[_0x226082(0x1dd),_0x273e2f[_0x226082(0x1dd)]],[_0x226082(0x1d8),_0x273e2f[_0x226082(0x1d8)]],['description',_0x273e2f[_0x226082(0x1e0)]]];if(_0x177620===_0x226082(0x1e9))return _0xb72681['filter'](([,_0x54c010])=>_0x54c010!==undefined&&_0x54c010!==null&&String(_0x54c010)[_0x226082(0x1db)]()!=='')['map'](([_0x550690,_0x4a9107])=>_0x226082(0x1e4)+_0x550690+':\x20'+String(_0x4a9107)+_0x226082(0x1de));return _0xb72681[_0x226082(0x1e6)](([,_0xe13f60])=>_0xe13f60!==undefined&&_0xe13f60!==null&&String(_0xe13f60)[_0x226082(0x1db)]()!=='')[_0x226082(0x1ce)](([_0x394447,_0x472a6d])=>'--\x20@lovrabet.'+_0x394447+':\x20'+String(_0x472a6d));}
@@ -1 +1 @@
1
- const a130_0x2571c2=a130_0x102d;(function(_0x2c96fb,_0x18afad){const _0x2cef44=a130_0x102d,_0x2449cc=_0x2c96fb();while(!![]){try{const _0x18b460=parseInt(_0x2cef44(0x6d))/0x1+parseInt(_0x2cef44(0x6a))/0x2+-parseInt(_0x2cef44(0x6e))/0x3+-parseInt(_0x2cef44(0x6b))/0x4*(-parseInt(_0x2cef44(0x6c))/0x5)+-parseInt(_0x2cef44(0x88))/0x6*(parseInt(_0x2cef44(0x75))/0x7)+parseInt(_0x2cef44(0x87))/0x8*(-parseInt(_0x2cef44(0x73))/0x9)+-parseInt(_0x2cef44(0x79))/0xa*(-parseInt(_0x2cef44(0x81))/0xb);if(_0x18b460===_0x18afad)break;else _0x2449cc['push'](_0x2449cc['shift']());}catch(_0x5f59e0){_0x2449cc['push'](_0x2449cc['shift']());}}}(a130_0x4c9a,0x29327));import{listSqlQueries}from'../../core/api-client.js';import{loadSqlProjectConfig}from'../../core/sql-sync/config.js';function a130_0x102d(_0x38b0cb,_0x1a39e5){_0x38b0cb=_0x38b0cb-0x6a;const _0x4c9adc=a130_0x4c9a();let _0x102d52=_0x4c9adc[_0x38b0cb];return _0x102d52;}function a130_0x4c9a(){const _0x82f03c=['keys','length','bool','103522VTmyZF','156ziZtul','33810Fuiwak','209332eXmqiF','535533VhRXyY','filePath','boolean','appCode','lockKey','17307dIrxpF','path','70wpTxMd','Also\x20check\x20for\x20remote-only\x20SQL\x20queries\x20not\x20present\x20locally','status','lockFilePath','1209880nKTUub','paging','remote','push','sqlName','map','sqls','has','11UkfKNQ','sqlCode','\x20missing,\x20','\x20modified,\x20','\x20unchanged','hash','840OFELmW','57978qTMjEY','Check\x20local\x20SQL\x20sync\x20status\x20against\x20lock\x20file','All\x20SQL\x20queries\x20are\x20in\x20sync.'];a130_0x4c9a=function(){return _0x82f03c;};return a130_0x4c9a();}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(_0x5bf648){const _0x129a23=a130_0x102d,_0x6b7a52=[];let _0x4988a6=0x1;while(!![]){const _0x328a24=await listSqlQueries(_0x5bf648,{'currentPage':_0x4988a6,'pageSize':PAGE_SIZE}),_0x12b771=_0x328a24['tableData']??[];_0x6b7a52[_0x129a23(0x7c)](..._0x12b771[_0x129a23(0x7e)](_0x39071f=>_0x39071f[_0x129a23(0x82)]));if(_0x12b771[_0x129a23(0x8c)]===0x0)break;const _0x20b057=_0x328a24[_0x129a23(0x7a)]?.['totalCount'];if(_0x20b057!=null?_0x6b7a52[_0x129a23(0x8c)]>=_0x20b057:_0x12b771['length']<PAGE_SIZE)break;_0x4988a6++;}return _0x6b7a52;}export const sqlStatus={'service':'sql','command':a130_0x2571c2(0x77),'description':a130_0x2571c2(0x89),'risk':'read','flags':[{'name':a130_0x2571c2(0x7b),'type':a130_0x2571c2(0x70),'description':a130_0x2571c2(0x76)}],async 'execute'(_0x45569c){const _0x47b95e=a130_0x2571c2,_0x4ed22b=loadSqlProjectConfig(_0x45569c[_0x47b95e(0x71)]),_0x2d8eae=await readSqlLockFile(_0x4ed22b[_0x47b95e(0x78)]),{appLock:_0x32d40c}=ensureSqlLockScope(_0x2d8eae??createEmptySqlLock(),_0x4ed22b[_0x47b95e(0x71)],_0x4ed22b['sqlRoot'],_0x47b95e(0x77)),_0x49dced=await scanLocalSqlQueries(_0x4ed22b),_0x51453f=[],_0x4ef127=[],_0x54a8d9=[],_0x18d636=[],_0x533496=new Set(_0x49dced[_0x47b95e(0x7e)](_0xd23702=>_0xd23702[_0x47b95e(0x72)]));for(const _0x2199d2 of _0x49dced){const _0x54f72e=await computeSqlFileHash(_0x2199d2[_0x47b95e(0x6f)]),_0x467c58=_0x32d40c['sqls'][_0x2199d2['lockKey']],_0x209375=!!_0x467c58&&_0x467c58[_0x47b95e(0x74)]!==_0x2199d2['relativePath'],_0x23dfbf=!!_0x467c58&&!!_0x2199d2[_0x47b95e(0x7d)]&&_0x467c58['sqlName']!==_0x2199d2[_0x47b95e(0x7d)];if(!_0x467c58)_0x51453f[_0x47b95e(0x7c)](_0x2199d2[_0x47b95e(0x72)]);else _0x467c58[_0x47b95e(0x86)]!==_0x54f72e||_0x209375||_0x23dfbf?_0x4ef127[_0x47b95e(0x7c)](_0x2199d2[_0x47b95e(0x72)]):_0x54a8d9[_0x47b95e(0x7c)](_0x2199d2[_0x47b95e(0x72)]);}for(const _0x2d3876 of Object[_0x47b95e(0x8b)](_0x32d40c[_0x47b95e(0x7f)])){!_0x533496[_0x47b95e(0x80)](_0x2d3876)&&_0x18d636['push'](_0x2d3876);}const _0x3cf48c=[];if(_0x45569c[_0x47b95e(0x8d)](_0x47b95e(0x7b))){const _0x45e203=await fetchAllSqlCodes(_0x45569c[_0x47b95e(0x71)]);for(const _0x5938df of _0x45e203){!_0x533496[_0x47b95e(0x80)](_0x5938df)&&!_0x32d40c[_0x47b95e(0x7f)][_0x5938df]&&_0x3cf48c[_0x47b95e(0x7c)](_0x5938df);}}const _0x617360=_0x51453f[_0x47b95e(0x8c)]===0x0&&_0x4ef127[_0x47b95e(0x8c)]===0x0&&_0x18d636[_0x47b95e(0x8c)]===0x0&&_0x3cf48c[_0x47b95e(0x8c)]===0x0;return{'ok':!![],'data':{'added':_0x51453f,'modified':_0x4ef127,'missing':_0x18d636,'unchanged':_0x54a8d9,'remoteOnly':_0x3cf48c},'message':_0x617360?_0x47b95e(0x8a):_0x51453f[_0x47b95e(0x8c)]+'\x20added,\x20'+_0x4ef127[_0x47b95e(0x8c)]+_0x47b95e(0x84)+_0x18d636[_0x47b95e(0x8c)]+_0x47b95e(0x83)+_0x54a8d9[_0x47b95e(0x8c)]+_0x47b95e(0x85)+(_0x3cf48c[_0x47b95e(0x8c)]>0x0?',\x20'+_0x3cf48c[_0x47b95e(0x8c)]+'\x20remote-only':'')};}};
1
+ const a131_0x536331=a131_0x3730;(function(_0x70e4a2,_0x2d29a7){const _0x328845=a131_0x3730,_0x520fa4=_0x70e4a2();while(!![]){try{const _0x154c31=parseInt(_0x328845(0x1f1))/0x1+parseInt(_0x328845(0x1ff))/0x2+parseInt(_0x328845(0x208))/0x3*(parseInt(_0x328845(0x20f))/0x4)+-parseInt(_0x328845(0x1fb))/0x5*(parseInt(_0x328845(0x1f7))/0x6)+parseInt(_0x328845(0x20e))/0x7*(-parseInt(_0x328845(0x20a))/0x8)+parseInt(_0x328845(0x1f9))/0x9+parseInt(_0x328845(0x20c))/0xa*(-parseInt(_0x328845(0x201))/0xb);if(_0x154c31===_0x2d29a7)break;else _0x520fa4['push'](_0x520fa4['shift']());}catch(_0x2a3d3a){_0x520fa4['push'](_0x520fa4['shift']());}}}(a131_0x222d,0x5d8e5));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;function a131_0x3730(_0x496ae9,_0x55fb67){_0x496ae9=_0x496ae9-0x1ec;const _0x222d57=a131_0x222d();let _0x37300d=_0x222d57[_0x496ae9];return _0x37300d;}async function fetchAllSqlCodes(_0x5f471d){const _0x368b62=a131_0x3730,_0x2c568c=[];let _0x316783=0x1;while(!![]){const _0x47f64f=await listSqlQueries(_0x5f471d,{'currentPage':_0x316783,'pageSize':PAGE_SIZE}),_0x30d061=_0x47f64f[_0x368b62(0x1fd)]??[];_0x2c568c[_0x368b62(0x206)](..._0x30d061[_0x368b62(0x1f5)](_0x3003c7=>_0x3003c7[_0x368b62(0x1f8)]));if(_0x30d061['length']===0x0)break;const _0x5abfe0=_0x47f64f[_0x368b62(0x1fe)]?.[_0x368b62(0x1ec)];if(_0x5abfe0!=null?_0x2c568c[_0x368b62(0x1ee)]>=_0x5abfe0:_0x30d061['length']<PAGE_SIZE)break;_0x316783++;}return _0x2c568c;}function a131_0x222d(){const _0x1c6dd2=['sql','\x20missing,\x20','312733LmJkNS','sqlName','status','bool','map','sqls','6risNat','sqlCode','2091951CILYeX','has','181625LclegN','keys','tableData','paging','859606gNisAk','\x20unchanged','518947gHjfyF','\x20modified,\x20','lockKey','Also\x20check\x20for\x20remote-only\x20SQL\x20queries\x20not\x20present\x20locally','path','push','appCode','5547vcxPam','read','16FCKOZc','lockFilePath','180qieWKF','\x20added,\x20','453880PPXQJt','916Mysmgv','totalCount','filePath','length'];a131_0x222d=function(){return _0x1c6dd2;};return a131_0x222d();}export const sqlStatus={'service':a131_0x536331(0x1ef),'command':a131_0x536331(0x1f3),'description':'Check\x20local\x20SQL\x20sync\x20status\x20against\x20lock\x20file','risk':a131_0x536331(0x209),'flags':[{'name':'remote','type':'boolean','description':a131_0x536331(0x204)}],async 'execute'(_0x1936f5){const _0x5645b2=a131_0x536331,_0x575e95=loadSqlProjectConfig(_0x1936f5[_0x5645b2(0x207)]),_0x3b54de=await readSqlLockFile(_0x575e95[_0x5645b2(0x20b)]),{appLock:_0x49e5a7}=ensureSqlLockScope(_0x3b54de??createEmptySqlLock(),_0x575e95[_0x5645b2(0x207)],_0x575e95['sqlRoot'],_0x5645b2(0x1f3)),_0x494d6a=await scanLocalSqlQueries(_0x575e95),_0x3df42f=[],_0x272750=[],_0x2456c9=[],_0x490b53=[],_0x2be1e1=new Set(_0x494d6a[_0x5645b2(0x1f5)](_0x1fd982=>_0x1fd982[_0x5645b2(0x203)]));for(const _0x2e87c3 of _0x494d6a){const _0x54bd56=await computeSqlFileHash(_0x2e87c3[_0x5645b2(0x1ed)]),_0x33cbdc=_0x49e5a7[_0x5645b2(0x1f6)][_0x2e87c3['lockKey']],_0x141b28=!!_0x33cbdc&&_0x33cbdc[_0x5645b2(0x205)]!==_0x2e87c3['relativePath'],_0x5c32e6=!!_0x33cbdc&&!!_0x2e87c3[_0x5645b2(0x1f2)]&&_0x33cbdc[_0x5645b2(0x1f2)]!==_0x2e87c3[_0x5645b2(0x1f2)];if(!_0x33cbdc)_0x3df42f[_0x5645b2(0x206)](_0x2e87c3[_0x5645b2(0x203)]);else _0x33cbdc['hash']!==_0x54bd56||_0x141b28||_0x5c32e6?_0x272750['push'](_0x2e87c3[_0x5645b2(0x203)]):_0x2456c9[_0x5645b2(0x206)](_0x2e87c3[_0x5645b2(0x203)]);}for(const _0x1fc2e9 of Object[_0x5645b2(0x1fc)](_0x49e5a7[_0x5645b2(0x1f6)])){!_0x2be1e1[_0x5645b2(0x1fa)](_0x1fc2e9)&&_0x490b53[_0x5645b2(0x206)](_0x1fc2e9);}const _0xbe845d=[];if(_0x1936f5[_0x5645b2(0x1f4)]('remote')){const _0x330d20=await fetchAllSqlCodes(_0x1936f5[_0x5645b2(0x207)]);for(const _0x4e5502 of _0x330d20){!_0x2be1e1[_0x5645b2(0x1fa)](_0x4e5502)&&!_0x49e5a7[_0x5645b2(0x1f6)][_0x4e5502]&&_0xbe845d[_0x5645b2(0x206)](_0x4e5502);}}const _0xa6ffb7=_0x3df42f[_0x5645b2(0x1ee)]===0x0&&_0x272750['length']===0x0&&_0x490b53[_0x5645b2(0x1ee)]===0x0&&_0xbe845d[_0x5645b2(0x1ee)]===0x0;return{'ok':!![],'data':{'added':_0x3df42f,'modified':_0x272750,'missing':_0x490b53,'unchanged':_0x2456c9,'remoteOnly':_0xbe845d},'message':_0xa6ffb7?'All\x20SQL\x20queries\x20are\x20in\x20sync.':_0x3df42f[_0x5645b2(0x1ee)]+_0x5645b2(0x20d)+_0x272750[_0x5645b2(0x1ee)]+_0x5645b2(0x202)+_0x490b53[_0x5645b2(0x1ee)]+_0x5645b2(0x1f0)+_0x2456c9['length']+_0x5645b2(0x200)+(_0xbe845d[_0x5645b2(0x1ee)]>0x0?',\x20'+_0xbe845d[_0x5645b2(0x1ee)]+'\x20remote-only':'')};}};
@@ -1 +1 @@
1
- const a131_0x1e7f26=a131_0x15bf;(function(_0x4afc22,_0x51bd8d){const _0x381ed3=a131_0x15bf,_0x10126f=_0x4afc22();while(!![]){try{const _0x598a90=-parseInt(_0x381ed3(0xbc))/0x1+parseInt(_0x381ed3(0x95))/0x2*(-parseInt(_0x381ed3(0x97))/0x3)+parseInt(_0x381ed3(0x96))/0x4*(parseInt(_0x381ed3(0x8c))/0x5)+-parseInt(_0x381ed3(0xb1))/0x6*(-parseInt(_0x381ed3(0xa0))/0x7)+parseInt(_0x381ed3(0x93))/0x8*(-parseInt(_0x381ed3(0xbb))/0x9)+parseInt(_0x381ed3(0xb6))/0xa*(parseInt(_0x381ed3(0x8e))/0xb)+-parseInt(_0x381ed3(0xac))/0xc*(parseInt(_0x381ed3(0xb7))/0xd);if(_0x598a90===_0x51bd8d)break;else _0x10126f['push'](_0x10126f['shift']());}catch(_0x5be2e6){_0x10126f['push'](_0x10126f['shift']());}}}(a131_0x11af,0xa3eb6));import{readFileSync,existsSync}from'node:fs';function a131_0x11af(){const _0x117abf=['str','schema:','tableName','119931GDgIpj','message','file','sqlType','flagMissing','toLowerCase','reason','fields','\x22\x20not\x20found\x20or\x20not\x20accessible','valid','string','Dataset\x20\x22','24ugvQWX','schemaWarnings','utf-8','map','Validate\x20SQL\x20content\x20without\x20saving\x20(type\x20detection,\x20parameter\x20extraction,\x20optional\x20schema\x20check)','138jZrCHP','sql','SQL\x20schema\x20validation','Path\x20to\x20the\x20SQL\x20file\x20to\x20validate','isArray','7420MVFkrB','4282187phmcVR','Inline\x20SQL\x20content\x20to\x20validate\x20(alternative\x20to\x20--file)','name','trim','9qvrEzH','96832mSwvph','parameters','tables','Table\x20\x22','8725ifDKVa','Comma-separated\x20dataset\x20codes\x20to\x20cross-check\x20table/column\x20names\x20against','19228YlCviW','dbtableConfig','filter','schemas','validation','128032Goxush','validate','2TWalVf','192APgHHZ','995361TjiDsd','type','File\x20not\x20found:\x20','push','length','Provide\x20--file\x20or\x20--sql'];a131_0x11af=function(){return _0x117abf;};return a131_0x11af();}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';import{assertDatasetSupportsLocalDevelopment,filterDbBackedDatasets}from'../../commands/dataset/capability.js';function a131_0x15bf(_0x598255,_0x3795d9){_0x598255=_0x598255-0x89;const _0x11afad=a131_0x11af();let _0x15bfa0=_0x11afad[_0x598255];return _0x15bfa0;}export const sqlValidate={'service':a131_0x1e7f26(0xb2),'command':a131_0x1e7f26(0x94),'description':a131_0x1e7f26(0xb0),'risk':'read','flags':[{'name':a131_0x1e7f26(0xa2),'type':a131_0x1e7f26(0xaa),'description':a131_0x1e7f26(0xb4)},{'name':a131_0x1e7f26(0xb2),'type':a131_0x1e7f26(0xaa),'description':a131_0x1e7f26(0xb8)},{'name':a131_0x1e7f26(0x91),'type':a131_0x1e7f26(0xaa),'description':a131_0x1e7f26(0x8d)}],async 'execute'(_0x2d59d7){const _0x264042=a131_0x1e7f26,_0x239f9a=_0x2d59d7[_0x264042(0x9d)](_0x264042(0xa2)),_0x1ad5cd=_0x2d59d7['str']('sql');if(!_0x239f9a&&!_0x1ad5cd)throw CliErrors[_0x264042(0xa4)]('file',_0x264042(0x9c));let _0x5a74e0;if(_0x239f9a){const _0x1dce0a=resolve(process['cwd'](),_0x239f9a);if(!existsSync(_0x1dce0a))throw CliErrors[_0x264042(0x92)](_0x264042(0x99)+_0x1dce0a);_0x5a74e0=readFileSync(_0x1dce0a,_0x264042(0xae));}else _0x5a74e0=_0x1ad5cd;const _0x574914=validateSql(_0x5a74e0),_0x27df8c={'valid':_0x574914['valid'],'sqlType':_0x574914[_0x264042(0xa3)][_0x264042(0x98)],'isSelectOnly':_0x574914[_0x264042(0xa3)]['isSelectOnly'],'isDangerous':_0x574914[_0x264042(0xa3)]['isDangerous'],'tables':_0x574914[_0x264042(0x8a)],'parameters':_0x574914[_0x264042(0x89)],'message':_0x574914['message']};_0x574914[_0x264042(0xa3)]['reason']&&(_0x27df8c[_0x264042(0xa6)]=_0x574914[_0x264042(0xa3)][_0x264042(0xa6)]);const _0x54625b=_0x2d59d7[_0x264042(0x9d)](_0x264042(0x91));if(_0x54625b&&_0x574914[_0x264042(0xa9)]){const _0x28b44f=_0x54625b['split'](',')['map'](_0xccff8d=>_0xccff8d[_0x264042(0xba)]())[_0x264042(0x90)](Boolean),_0x395272=[],_0x1a08cd=filterDbBackedDatasets(await listDatasets(_0x2d59d7['appCode'])),_0xf6e3f2=new Map(_0x1a08cd[_0x264042(0xaf)](_0x336f08=>[_0x336f08['dbtableConfig']?.[_0x264042(0x9f)]?.[_0x264042(0xa5)](),_0x336f08]));for(const _0x452c9f of _0x574914[_0x264042(0x8a)]){const _0x13c1bb=_0xf6e3f2['get'](_0x452c9f[_0x264042(0xa5)]());!_0x13c1bb&&_0x395272[_0x264042(0x9a)](_0x264042(0x8b)+_0x452c9f+'\x22\x20not\x20found\x20in\x20any\x20dataset');}for(const _0x54b585 of _0x28b44f){let _0x1671dc;try{_0x1671dc=await getDatasetDetail(_0x54b585);}catch{_0x395272[_0x264042(0x9a)](_0x264042(0xab)+_0x54b585+_0x264042(0xa8));continue;}assertDatasetSupportsLocalDevelopment(_0x1671dc,_0x264042(0xb3));const _0x32f4d=Array[_0x264042(0xb5)](_0x1671dc[_0x264042(0xa7)])?_0x1671dc[_0x264042(0xa7)]:[],_0x23b945=new Set(_0x32f4d[_0x264042(0xaf)](_0x1622c1=>_0x1622c1[_0x264042(0xb9)]?.[_0x264042(0xa5)]())),_0xc4218b=_0x1671dc[_0x264042(0x8f)]?.['tableName']||_0x1671dc['tableName']||_0x54b585;_0x27df8c[_0x264042(0x9e)+_0xc4218b]={'code':_0x54b585,'tableName':_0xc4218b,'fieldCount':_0x23b945['size'],'fields':Array['from'](_0x23b945)};}_0x395272[_0x264042(0x9b)]>0x0&&(_0x27df8c[_0x264042(0xad)]=_0x395272);}return{'ok':_0x574914[_0x264042(0xa9)],'data':_0x27df8c,'message':_0x574914[_0x264042(0xa1)]};}};
1
+ const a132_0x22ff02=a132_0x4385;function a132_0x4385(_0x277dbc,_0x5203f0){_0x277dbc=_0x277dbc-0x1cf;const _0x32e4fd=a132_0x32e4();let _0x43856f=_0x32e4fd[_0x277dbc];return _0x43856f;}(function(_0x1ae741,_0x321f5b){const _0x50147e=a132_0x4385,_0x132db1=_0x1ae741();while(!![]){try{const _0x5676d2=-parseInt(_0x50147e(0x1dc))/0x1*(-parseInt(_0x50147e(0x203))/0x2)+-parseInt(_0x50147e(0x1f5))/0x3*(parseInt(_0x50147e(0x1ea))/0x4)+-parseInt(_0x50147e(0x1db))/0x5*(-parseInt(_0x50147e(0x1fb))/0x6)+parseInt(_0x50147e(0x1e0))/0x7*(parseInt(_0x50147e(0x1d0))/0x8)+parseInt(_0x50147e(0x204))/0x9*(parseInt(_0x50147e(0x1e7))/0xa)+-parseInt(_0x50147e(0x1fe))/0xb+parseInt(_0x50147e(0x1e6))/0xc*(parseInt(_0x50147e(0x206))/0xd);if(_0x5676d2===_0x321f5b)break;else _0x132db1['push'](_0x132db1['shift']());}catch(_0x5a9bef){_0x132db1['push'](_0x132db1['shift']());}}}(a132_0x32e4,0x19a01));import{readFileSync,existsSync}from'node:fs';import{resolve}from'node:path';import{validateSql}from'../../core/sql-validator.js';function a132_0x32e4(){const _0x47c9c6=['55ucXKHw','153721NnWteB','read','Comma-separated\x20dataset\x20codes\x20to\x20cross-check\x20table/column\x20names\x20against','file','7gtmDzC','Path\x20to\x20the\x20SQL\x20file\x20to\x20validate','Dataset\x20\x22','split','reason','from','84AlssxE','30SHmwRL','fields','string','330224qRoBDv','str','flagMissing','size','schemas','tables','\x22\x20not\x20found\x20or\x20not\x20accessible','filter','isDangerous','map','tableName','6akUDmm','parameters','Provide\x20--file\x20or\x20--sql','get','appCode','Validate\x20SQL\x20content\x20without\x20saving\x20(type\x20detection,\x20parameter\x20extraction,\x20optional\x20schema\x20check)','58650BDEucj','validation','name','2288979CIXByV','utf-8','sql','isArray','trim','2QeyGMj','390573TvlfBB','toLowerCase','30121KudKnL','cwd','sqlType','564048eDTRAE','valid','length','dbtableConfig','validate','message','schema:','Table\x20\x22','isSelectOnly','Inline\x20SQL\x20content\x20to\x20validate\x20(alternative\x20to\x20--file)','File\x20not\x20found:\x20'];a132_0x32e4=function(){return _0x47c9c6;};return a132_0x32e4();}import{getDatasetDetail,listDatasets}from'../../core/api-client.js';import{CliErrors}from'../../errors.js';import{assertDatasetSupportsLocalDevelopment,filterDbBackedDatasets}from'../../commands/dataset/capability.js';export const sqlValidate={'service':a132_0x22ff02(0x200),'command':a132_0x22ff02(0x1d4),'description':a132_0x22ff02(0x1fa),'risk':a132_0x22ff02(0x1dd),'flags':[{'name':a132_0x22ff02(0x1df),'type':'string','description':a132_0x22ff02(0x1e1)},{'name':a132_0x22ff02(0x200),'type':a132_0x22ff02(0x1e9),'description':a132_0x22ff02(0x1d9)},{'name':'schemas','type':a132_0x22ff02(0x1e9),'description':a132_0x22ff02(0x1de)}],async 'execute'(_0x397f21){const _0x35c7ea=a132_0x22ff02,_0x59ec48=_0x397f21['str']('file'),_0x12d340=_0x397f21[_0x35c7ea(0x1eb)](_0x35c7ea(0x200));if(!_0x59ec48&&!_0x12d340)throw CliErrors[_0x35c7ea(0x1ec)](_0x35c7ea(0x1df),_0x35c7ea(0x1f7));let _0x15dfb7;if(_0x59ec48){const _0x355054=resolve(process[_0x35c7ea(0x207)](),_0x59ec48);if(!existsSync(_0x355054))throw CliErrors[_0x35c7ea(0x1fc)](_0x35c7ea(0x1da)+_0x355054);_0x15dfb7=readFileSync(_0x355054,_0x35c7ea(0x1ff));}else _0x15dfb7=_0x12d340;const _0x28106e=validateSql(_0x15dfb7),_0x4ab0ea={'valid':_0x28106e[_0x35c7ea(0x1d1)],'sqlType':_0x28106e[_0x35c7ea(0x1cf)]['type'],'isSelectOnly':_0x28106e['sqlType'][_0x35c7ea(0x1d8)],'isDangerous':_0x28106e[_0x35c7ea(0x1cf)][_0x35c7ea(0x1f2)],'tables':_0x28106e['tables'],'parameters':_0x28106e[_0x35c7ea(0x1f6)],'message':_0x28106e[_0x35c7ea(0x1d5)]};_0x28106e[_0x35c7ea(0x1cf)]['reason']&&(_0x4ab0ea[_0x35c7ea(0x1e4)]=_0x28106e['sqlType'][_0x35c7ea(0x1e4)]);const _0x558e26=_0x397f21[_0x35c7ea(0x1eb)](_0x35c7ea(0x1ee));if(_0x558e26&&_0x28106e[_0x35c7ea(0x1d1)]){const _0x33cc84=_0x558e26[_0x35c7ea(0x1e3)](',')[_0x35c7ea(0x1f3)](_0x42d46e=>_0x42d46e[_0x35c7ea(0x202)]())[_0x35c7ea(0x1f1)](Boolean),_0x21f235=[],_0x5c6991=filterDbBackedDatasets(await listDatasets(_0x397f21[_0x35c7ea(0x1f9)])),_0x7a4216=new Map(_0x5c6991[_0x35c7ea(0x1f3)](_0x14c96e=>[_0x14c96e[_0x35c7ea(0x1d3)]?.[_0x35c7ea(0x1f4)]?.[_0x35c7ea(0x205)](),_0x14c96e]));for(const _0x1c56fe of _0x28106e[_0x35c7ea(0x1ef)]){const _0x16ba79=_0x7a4216[_0x35c7ea(0x1f8)](_0x1c56fe['toLowerCase']());!_0x16ba79&&_0x21f235['push'](_0x35c7ea(0x1d7)+_0x1c56fe+'\x22\x20not\x20found\x20in\x20any\x20dataset');}for(const _0x3ea00c of _0x33cc84){let _0xbaab4b;try{_0xbaab4b=await getDatasetDetail(_0x3ea00c);}catch{_0x21f235['push'](_0x35c7ea(0x1e2)+_0x3ea00c+_0x35c7ea(0x1f0));continue;}assertDatasetSupportsLocalDevelopment(_0xbaab4b,'SQL\x20schema\x20validation');const _0x4ba8ef=Array[_0x35c7ea(0x201)](_0xbaab4b[_0x35c7ea(0x1e8)])?_0xbaab4b[_0x35c7ea(0x1e8)]:[],_0x3015b9=new Set(_0x4ba8ef[_0x35c7ea(0x1f3)](_0x3879a9=>_0x3879a9[_0x35c7ea(0x1fd)]?.[_0x35c7ea(0x205)]())),_0x4529a2=_0xbaab4b[_0x35c7ea(0x1d3)]?.[_0x35c7ea(0x1f4)]||_0xbaab4b[_0x35c7ea(0x1f4)]||_0x3ea00c;_0x4ab0ea[_0x35c7ea(0x1d6)+_0x4529a2]={'code':_0x3ea00c,'tableName':_0x4529a2,'fieldCount':_0x3015b9[_0x35c7ea(0x1ed)],'fields':Array[_0x35c7ea(0x1e5)](_0x3015b9)};}_0x21f235[_0x35c7ea(0x1d2)]>0x0&&(_0x4ab0ea['schemaWarnings']=_0x21f235);}return{'ok':_0x28106e[_0x35c7ea(0x1d1)],'data':_0x4ab0ea,'message':_0x28106e[_0x35c7ea(0x1d5)]};}};