@constructive-sdk/cli 0.12.7 → 0.12.8

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 (333) hide show
  1. package/admin/cli/commands/app-achievement.js +38 -15
  2. package/admin/cli/commands/app-admin-grant.js +38 -15
  3. package/admin/cli/commands/app-grant.js +40 -16
  4. package/admin/cli/commands/app-level-requirement.js +42 -17
  5. package/admin/cli/commands/app-level.js +40 -16
  6. package/admin/cli/commands/app-limit-default.js +32 -12
  7. package/admin/cli/commands/app-limit.js +36 -14
  8. package/admin/cli/commands/app-membership-default.js +40 -16
  9. package/admin/cli/commands/app-membership.js +58 -25
  10. package/admin/cli/commands/app-owner-grant.js +38 -15
  11. package/admin/cli/commands/app-permission-default.js +30 -11
  12. package/admin/cli/commands/app-permission.js +36 -14
  13. package/admin/cli/commands/app-step.js +38 -15
  14. package/admin/cli/commands/claimed-invite.js +38 -15
  15. package/admin/cli/commands/invite.js +50 -21
  16. package/admin/cli/commands/membership-type.js +34 -13
  17. package/admin/cli/commands/org-admin-grant.js +40 -16
  18. package/admin/cli/commands/org-chart-edge-grant.js +44 -18
  19. package/admin/cli/commands/org-chart-edge.js +42 -17
  20. package/admin/cli/commands/org-claimed-invite.js +40 -16
  21. package/admin/cli/commands/org-get-managers-record.js +30 -11
  22. package/admin/cli/commands/org-get-subordinates-record.js +30 -11
  23. package/admin/cli/commands/org-grant.js +42 -17
  24. package/admin/cli/commands/org-invite.js +54 -23
  25. package/admin/cli/commands/org-limit-default.js +32 -12
  26. package/admin/cli/commands/org-limit.js +38 -15
  27. package/admin/cli/commands/org-member.js +34 -13
  28. package/admin/cli/commands/org-membership-default.js +44 -18
  29. package/admin/cli/commands/org-membership.js +58 -25
  30. package/admin/cli/commands/org-owner-grant.js +40 -16
  31. package/admin/cli/commands/org-permission-default.js +32 -12
  32. package/admin/cli/commands/org-permission.js +36 -14
  33. package/admin/cli/utils.d.ts +38 -0
  34. package/admin/cli/utils.js +96 -0
  35. package/auth/cli/commands/audit-log.js +42 -17
  36. package/auth/cli/commands/connected-account.js +42 -17
  37. package/auth/cli/commands/crypto-address.js +40 -16
  38. package/auth/cli/commands/email.js +40 -16
  39. package/auth/cli/commands/phone-number.js +42 -17
  40. package/auth/cli/commands/role-type.js +30 -11
  41. package/auth/cli/commands/user.js +80 -16
  42. package/auth/cli/utils.d.ts +38 -0
  43. package/auth/cli/utils.js +96 -0
  44. package/esm/admin/cli/commands/app-achievement.js +39 -16
  45. package/esm/admin/cli/commands/app-admin-grant.js +39 -16
  46. package/esm/admin/cli/commands/app-grant.js +41 -17
  47. package/esm/admin/cli/commands/app-level-requirement.js +43 -18
  48. package/esm/admin/cli/commands/app-level.js +41 -17
  49. package/esm/admin/cli/commands/app-limit-default.js +33 -13
  50. package/esm/admin/cli/commands/app-limit.js +37 -15
  51. package/esm/admin/cli/commands/app-membership-default.js +41 -17
  52. package/esm/admin/cli/commands/app-membership.js +59 -26
  53. package/esm/admin/cli/commands/app-owner-grant.js +39 -16
  54. package/esm/admin/cli/commands/app-permission-default.js +31 -12
  55. package/esm/admin/cli/commands/app-permission.js +37 -15
  56. package/esm/admin/cli/commands/app-step.js +39 -16
  57. package/esm/admin/cli/commands/claimed-invite.js +39 -16
  58. package/esm/admin/cli/commands/invite.js +51 -22
  59. package/esm/admin/cli/commands/membership-type.js +35 -14
  60. package/esm/admin/cli/commands/org-admin-grant.js +41 -17
  61. package/esm/admin/cli/commands/org-chart-edge-grant.js +45 -19
  62. package/esm/admin/cli/commands/org-chart-edge.js +43 -18
  63. package/esm/admin/cli/commands/org-claimed-invite.js +41 -17
  64. package/esm/admin/cli/commands/org-get-managers-record.js +31 -12
  65. package/esm/admin/cli/commands/org-get-subordinates-record.js +31 -12
  66. package/esm/admin/cli/commands/org-grant.js +43 -18
  67. package/esm/admin/cli/commands/org-invite.js +55 -24
  68. package/esm/admin/cli/commands/org-limit-default.js +33 -13
  69. package/esm/admin/cli/commands/org-limit.js +39 -16
  70. package/esm/admin/cli/commands/org-member.js +35 -14
  71. package/esm/admin/cli/commands/org-membership-default.js +45 -19
  72. package/esm/admin/cli/commands/org-membership.js +59 -26
  73. package/esm/admin/cli/commands/org-owner-grant.js +41 -17
  74. package/esm/admin/cli/commands/org-permission-default.js +33 -13
  75. package/esm/admin/cli/commands/org-permission.js +37 -15
  76. package/esm/admin/cli/utils.d.ts +38 -0
  77. package/esm/admin/cli/utils.js +90 -0
  78. package/esm/auth/cli/commands/audit-log.js +43 -18
  79. package/esm/auth/cli/commands/connected-account.js +43 -18
  80. package/esm/auth/cli/commands/crypto-address.js +41 -17
  81. package/esm/auth/cli/commands/email.js +41 -17
  82. package/esm/auth/cli/commands/phone-number.js +43 -18
  83. package/esm/auth/cli/commands/role-type.js +31 -12
  84. package/esm/auth/cli/commands/user.js +81 -17
  85. package/esm/auth/cli/utils.d.ts +38 -0
  86. package/esm/auth/cli/utils.js +90 -0
  87. package/esm/objects/cli/commands/commit.js +45 -19
  88. package/esm/objects/cli/commands/get-all-record.js +31 -12
  89. package/esm/objects/cli/commands/object.js +41 -17
  90. package/esm/objects/cli/commands/ref.js +37 -15
  91. package/esm/objects/cli/commands/store.js +37 -15
  92. package/esm/objects/cli/utils.d.ts +38 -0
  93. package/esm/objects/cli/utils.js +90 -0
  94. package/esm/public/cli/commands/api-module.js +37 -15
  95. package/esm/public/cli/commands/api-schema.js +35 -14
  96. package/esm/public/cli/commands/api.js +41 -17
  97. package/esm/public/cli/commands/app-achievement.js +39 -16
  98. package/esm/public/cli/commands/app-admin-grant.js +39 -16
  99. package/esm/public/cli/commands/app-grant.js +41 -17
  100. package/esm/public/cli/commands/app-level-requirement.js +43 -18
  101. package/esm/public/cli/commands/app-level.js +41 -17
  102. package/esm/public/cli/commands/app-limit-default.js +33 -13
  103. package/esm/public/cli/commands/app-limit.js +37 -15
  104. package/esm/public/cli/commands/app-membership-default.js +41 -17
  105. package/esm/public/cli/commands/app-membership.js +59 -26
  106. package/esm/public/cli/commands/app-owner-grant.js +39 -16
  107. package/esm/public/cli/commands/app-permission-default.js +31 -12
  108. package/esm/public/cli/commands/app-permission.js +37 -15
  109. package/esm/public/cli/commands/app-step.js +39 -16
  110. package/esm/public/cli/commands/app.js +45 -19
  111. package/esm/public/cli/commands/ast-migration.js +53 -23
  112. package/esm/public/cli/commands/audit-log.js +43 -18
  113. package/esm/public/cli/commands/blueprint-template.js +67 -30
  114. package/esm/public/cli/commands/blueprint.js +61 -27
  115. package/esm/public/cli/commands/check-constraint.js +55 -24
  116. package/esm/public/cli/commands/claimed-invite.js +39 -16
  117. package/esm/public/cli/commands/commit.js +45 -19
  118. package/esm/public/cli/commands/connected-account.js +43 -18
  119. package/esm/public/cli/commands/connected-accounts-module.js +41 -17
  120. package/esm/public/cli/commands/crypto-address.js +41 -17
  121. package/esm/public/cli/commands/crypto-addresses-module.js +43 -18
  122. package/esm/public/cli/commands/crypto-auth-module.js +55 -24
  123. package/esm/public/cli/commands/database-provision-module.js +55 -24
  124. package/esm/public/cli/commands/database-transfer.js +55 -24
  125. package/esm/public/cli/commands/database.js +43 -18
  126. package/esm/public/cli/commands/default-ids-module.js +31 -12
  127. package/esm/public/cli/commands/default-privilege.js +41 -17
  128. package/esm/public/cli/commands/denormalized-table-field.js +51 -22
  129. package/esm/public/cli/commands/domain.js +39 -16
  130. package/esm/public/cli/commands/email.js +41 -17
  131. package/esm/public/cli/commands/emails-module.js +41 -17
  132. package/esm/public/cli/commands/embedding-chunk.js +63 -28
  133. package/esm/public/cli/commands/encrypted-secrets-module.js +37 -15
  134. package/esm/public/cli/commands/enum.js +51 -22
  135. package/esm/public/cli/commands/field.js +75 -34
  136. package/esm/public/cli/commands/foreign-key-constraint.js +63 -28
  137. package/esm/public/cli/commands/full-text-search.js +45 -19
  138. package/esm/public/cli/commands/get-all-record.js +31 -12
  139. package/esm/public/cli/commands/hierarchy-module.js +67 -30
  140. package/esm/public/cli/commands/index.js +65 -29
  141. package/esm/public/cli/commands/invite.js +51 -22
  142. package/esm/public/cli/commands/invites-module.js +55 -24
  143. package/esm/public/cli/commands/levels-module.js +79 -36
  144. package/esm/public/cli/commands/limits-module.js +63 -28
  145. package/esm/public/cli/commands/membership-type.js +35 -14
  146. package/esm/public/cli/commands/membership-types-module.js +37 -15
  147. package/esm/public/cli/commands/memberships-module.js +89 -41
  148. package/esm/public/cli/commands/migrate-file.js +33 -13
  149. package/esm/public/cli/commands/node-type-registry.js +89 -19
  150. package/esm/public/cli/commands/object.js +41 -17
  151. package/esm/public/cli/commands/org-admin-grant.js +41 -17
  152. package/esm/public/cli/commands/org-chart-edge-grant.js +45 -19
  153. package/esm/public/cli/commands/org-chart-edge.js +43 -18
  154. package/esm/public/cli/commands/org-claimed-invite.js +41 -17
  155. package/esm/public/cli/commands/org-get-managers-record.js +31 -12
  156. package/esm/public/cli/commands/org-get-subordinates-record.js +31 -12
  157. package/esm/public/cli/commands/org-grant.js +43 -18
  158. package/esm/public/cli/commands/org-invite.js +55 -24
  159. package/esm/public/cli/commands/org-limit-default.js +33 -13
  160. package/esm/public/cli/commands/org-limit.js +39 -16
  161. package/esm/public/cli/commands/org-member.js +35 -14
  162. package/esm/public/cli/commands/org-membership-default.js +45 -19
  163. package/esm/public/cli/commands/org-membership.js +59 -26
  164. package/esm/public/cli/commands/org-owner-grant.js +41 -17
  165. package/esm/public/cli/commands/org-permission-default.js +33 -13
  166. package/esm/public/cli/commands/org-permission.js +37 -15
  167. package/esm/public/cli/commands/permissions-module.js +61 -27
  168. package/esm/public/cli/commands/phone-number.js +43 -18
  169. package/esm/public/cli/commands/phone-numbers-module.js +41 -17
  170. package/esm/public/cli/commands/policy.js +61 -27
  171. package/esm/public/cli/commands/primary-key-constraint.js +53 -23
  172. package/esm/public/cli/commands/profiles-module.js +63 -28
  173. package/esm/public/cli/commands/ref.js +37 -15
  174. package/esm/public/cli/commands/relation-provision.js +89 -41
  175. package/esm/public/cli/commands/rls-module.js +49 -21
  176. package/esm/public/cli/commands/role-type.js +31 -12
  177. package/esm/public/cli/commands/schema-grant.js +39 -16
  178. package/esm/public/cli/commands/schema.js +55 -24
  179. package/esm/public/cli/commands/secrets-module.js +37 -15
  180. package/esm/public/cli/commands/secure-table-provision.js +63 -28
  181. package/esm/public/cli/commands/sessions-module.js +49 -21
  182. package/esm/public/cli/commands/site-metadatum.js +39 -16
  183. package/esm/public/cli/commands/site-module.js +37 -15
  184. package/esm/public/cli/commands/site-theme.js +35 -14
  185. package/esm/public/cli/commands/site.js +45 -19
  186. package/esm/public/cli/commands/sql-action.js +53 -23
  187. package/esm/public/cli/commands/store.js +37 -15
  188. package/esm/public/cli/commands/table-grant.js +45 -19
  189. package/esm/public/cli/commands/table-template-module.js +45 -19
  190. package/esm/public/cli/commands/table.js +65 -29
  191. package/esm/public/cli/commands/trigger-function.js +39 -16
  192. package/esm/public/cli/commands/trigger.js +53 -23
  193. package/esm/public/cli/commands/unique-constraint.js +55 -24
  194. package/esm/public/cli/commands/user-auth-module.js +79 -36
  195. package/esm/public/cli/commands/user.js +81 -17
  196. package/esm/public/cli/commands/users-module.js +41 -17
  197. package/esm/public/cli/commands/view-grant.js +41 -17
  198. package/esm/public/cli/commands/view-rule.js +39 -16
  199. package/esm/public/cli/commands/view-table.js +35 -14
  200. package/esm/public/cli/commands/view.js +59 -26
  201. package/esm/public/cli/commands.js +3 -3
  202. package/esm/public/cli/executor.d.ts +1 -1
  203. package/esm/public/cli/utils.d.ts +38 -0
  204. package/esm/public/cli/utils.js +90 -0
  205. package/esm/public/orm/index.d.ts +2 -2
  206. package/esm/public/orm/index.js +2 -2
  207. package/esm/public/orm/input-types.d.ts +161 -147
  208. package/esm/public/orm/models/index.d.ts +1 -1
  209. package/esm/public/orm/models/index.js +1 -1
  210. package/objects/cli/commands/commit.js +44 -18
  211. package/objects/cli/commands/get-all-record.js +30 -11
  212. package/objects/cli/commands/object.js +40 -16
  213. package/objects/cli/commands/ref.js +36 -14
  214. package/objects/cli/commands/store.js +36 -14
  215. package/objects/cli/utils.d.ts +38 -0
  216. package/objects/cli/utils.js +96 -0
  217. package/package.json +3 -3
  218. package/public/cli/commands/api-module.js +36 -14
  219. package/public/cli/commands/api-schema.js +34 -13
  220. package/public/cli/commands/api.js +40 -16
  221. package/public/cli/commands/app-achievement.js +38 -15
  222. package/public/cli/commands/app-admin-grant.js +38 -15
  223. package/public/cli/commands/app-grant.js +40 -16
  224. package/public/cli/commands/app-level-requirement.js +42 -17
  225. package/public/cli/commands/app-level.js +40 -16
  226. package/public/cli/commands/app-limit-default.js +32 -12
  227. package/public/cli/commands/app-limit.js +36 -14
  228. package/public/cli/commands/app-membership-default.js +40 -16
  229. package/public/cli/commands/app-membership.js +58 -25
  230. package/public/cli/commands/app-owner-grant.js +38 -15
  231. package/public/cli/commands/app-permission-default.js +30 -11
  232. package/public/cli/commands/app-permission.js +36 -14
  233. package/public/cli/commands/app-step.js +38 -15
  234. package/public/cli/commands/app.js +44 -18
  235. package/public/cli/commands/ast-migration.js +52 -22
  236. package/public/cli/commands/audit-log.js +42 -17
  237. package/public/cli/commands/blueprint-template.js +66 -29
  238. package/public/cli/commands/blueprint.js +60 -26
  239. package/public/cli/commands/check-constraint.js +54 -23
  240. package/public/cli/commands/claimed-invite.js +38 -15
  241. package/public/cli/commands/commit.js +44 -18
  242. package/public/cli/commands/connected-account.js +42 -17
  243. package/public/cli/commands/connected-accounts-module.js +40 -16
  244. package/public/cli/commands/crypto-address.js +40 -16
  245. package/public/cli/commands/crypto-addresses-module.js +42 -17
  246. package/public/cli/commands/crypto-auth-module.js +54 -23
  247. package/public/cli/commands/database-provision-module.js +54 -23
  248. package/public/cli/commands/database-transfer.js +54 -23
  249. package/public/cli/commands/database.js +42 -17
  250. package/public/cli/commands/default-ids-module.js +30 -11
  251. package/public/cli/commands/default-privilege.js +40 -16
  252. package/public/cli/commands/denormalized-table-field.js +50 -21
  253. package/public/cli/commands/domain.js +38 -15
  254. package/public/cli/commands/email.js +40 -16
  255. package/public/cli/commands/emails-module.js +40 -16
  256. package/public/cli/commands/embedding-chunk.js +62 -27
  257. package/public/cli/commands/encrypted-secrets-module.js +36 -14
  258. package/public/cli/commands/enum.js +50 -21
  259. package/public/cli/commands/field.js +74 -33
  260. package/public/cli/commands/foreign-key-constraint.js +62 -27
  261. package/public/cli/commands/full-text-search.js +44 -18
  262. package/public/cli/commands/get-all-record.js +30 -11
  263. package/public/cli/commands/hierarchy-module.js +66 -29
  264. package/public/cli/commands/index.js +64 -28
  265. package/public/cli/commands/invite.js +50 -21
  266. package/public/cli/commands/invites-module.js +54 -23
  267. package/public/cli/commands/levels-module.js +78 -35
  268. package/public/cli/commands/limits-module.js +62 -27
  269. package/public/cli/commands/membership-type.js +34 -13
  270. package/public/cli/commands/membership-types-module.js +36 -14
  271. package/public/cli/commands/memberships-module.js +88 -40
  272. package/public/cli/commands/migrate-file.js +32 -12
  273. package/public/cli/commands/node-type-registry.js +88 -18
  274. package/public/cli/commands/object.js +40 -16
  275. package/public/cli/commands/org-admin-grant.js +40 -16
  276. package/public/cli/commands/org-chart-edge-grant.js +44 -18
  277. package/public/cli/commands/org-chart-edge.js +42 -17
  278. package/public/cli/commands/org-claimed-invite.js +40 -16
  279. package/public/cli/commands/org-get-managers-record.js +30 -11
  280. package/public/cli/commands/org-get-subordinates-record.js +30 -11
  281. package/public/cli/commands/org-grant.js +42 -17
  282. package/public/cli/commands/org-invite.js +54 -23
  283. package/public/cli/commands/org-limit-default.js +32 -12
  284. package/public/cli/commands/org-limit.js +38 -15
  285. package/public/cli/commands/org-member.js +34 -13
  286. package/public/cli/commands/org-membership-default.js +44 -18
  287. package/public/cli/commands/org-membership.js +58 -25
  288. package/public/cli/commands/org-owner-grant.js +40 -16
  289. package/public/cli/commands/org-permission-default.js +32 -12
  290. package/public/cli/commands/org-permission.js +36 -14
  291. package/public/cli/commands/permissions-module.js +60 -26
  292. package/public/cli/commands/phone-number.js +42 -17
  293. package/public/cli/commands/phone-numbers-module.js +40 -16
  294. package/public/cli/commands/policy.js +60 -26
  295. package/public/cli/commands/primary-key-constraint.js +52 -22
  296. package/public/cli/commands/profiles-module.js +62 -27
  297. package/public/cli/commands/ref.js +36 -14
  298. package/public/cli/commands/relation-provision.js +88 -40
  299. package/public/cli/commands/rls-module.js +48 -20
  300. package/public/cli/commands/role-type.js +30 -11
  301. package/public/cli/commands/schema-grant.js +38 -15
  302. package/public/cli/commands/schema.js +54 -23
  303. package/public/cli/commands/secrets-module.js +36 -14
  304. package/public/cli/commands/secure-table-provision.js +62 -27
  305. package/public/cli/commands/sessions-module.js +48 -20
  306. package/public/cli/commands/site-metadatum.js +38 -15
  307. package/public/cli/commands/site-module.js +36 -14
  308. package/public/cli/commands/site-theme.js +34 -13
  309. package/public/cli/commands/site.js +44 -18
  310. package/public/cli/commands/sql-action.js +52 -22
  311. package/public/cli/commands/store.js +36 -14
  312. package/public/cli/commands/table-grant.js +44 -18
  313. package/public/cli/commands/table-template-module.js +44 -18
  314. package/public/cli/commands/table.js +64 -28
  315. package/public/cli/commands/trigger-function.js +38 -15
  316. package/public/cli/commands/trigger.js +52 -22
  317. package/public/cli/commands/unique-constraint.js +54 -23
  318. package/public/cli/commands/user-auth-module.js +78 -35
  319. package/public/cli/commands/user.js +80 -16
  320. package/public/cli/commands/users-module.js +40 -16
  321. package/public/cli/commands/view-grant.js +40 -16
  322. package/public/cli/commands/view-rule.js +38 -15
  323. package/public/cli/commands/view-table.js +34 -13
  324. package/public/cli/commands/view.js +58 -25
  325. package/public/cli/commands.js +3 -3
  326. package/public/cli/executor.d.ts +1 -1
  327. package/public/cli/utils.d.ts +38 -0
  328. package/public/cli/utils.js +96 -0
  329. package/public/orm/index.d.ts +2 -2
  330. package/public/orm/index.js +2 -2
  331. package/public/orm/input-types.d.ts +161 -147
  332. package/public/orm/models/index.d.ts +1 -1
  333. package/public/orm/models/index.js +4 -4
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { extractFirst } from 'inquirerer';
7
7
  import { getClient } from '../executor';
8
- import { coerceAnswers, stripUndefined } from '../utils';
8
+ import { coerceAnswers, parseFindFirstArgs, parseFindManyArgs, stripUndefined } from '../utils';
9
9
  const fieldSchema = {
10
10
  id: 'uuid',
11
11
  username: 'string',
@@ -19,7 +19,7 @@ const fieldSchema = {
19
19
  displayNameTrgmSimilarity: 'float',
20
20
  searchScore: 'float',
21
21
  };
22
- const usage = '\nuser <command>\n\nCommands:\n list List all user records\n get Get a user by ID\n create Create a new user\n update Update an existing user\n delete Delete a user\n\n --help, -h Show this help message\n';
22
+ const usage = '\nuser <command>\n\nCommands:\n list List user records\n find-first Find first matching user record\n search <query> Search user records\n get Get a user by ID\n create Create a new user\n update Update an existing user\n delete Delete a user\n\nList Options:\n --limit <n> Max number of records to return (forward pagination)\n --last <n> Number of records from the end (backward pagination)\n --after <cursor> Cursor for forward pagination\n --before <cursor> Cursor for backward pagination\n --offset <n> Number of records to skip\n --select <fields> Comma-separated list of fields to return\n --where.<field>.<op> Filter (dot-notation, e.g. --where.name.equalTo foo)\n --condition.<f>.<op> Condition filter (dot-notation)\n --orderBy <values> Comma-separated ordering values (e.g. NAME_ASC,CREATED_AT_DESC)\n\nFind-First Options:\n --select <fields> Comma-separated list of fields to return\n --where.<field>.<op> Filter (dot-notation, e.g. --where.status.equalTo active)\n --condition.<f>.<op> Condition filter (dot-notation)\n\nSearch Options:\n <query> Search query string (required)\n --limit <n> Max number of records to return\n --offset <n> Number of records to skip\n --select <fields> Comma-separated list of fields to return\n --orderBy <values> Comma-separated list of ordering values\n\n --help, -h Show this help message\n';
23
23
  export default async (argv, prompter, _options) => {
24
24
  if (argv.help || argv.h) {
25
25
  console.log(usage);
@@ -32,7 +32,7 @@ export default async (argv, prompter, _options) => {
32
32
  type: 'autocomplete',
33
33
  name: 'subcommand',
34
34
  message: 'What do you want to do?',
35
- options: ['list', 'get', 'create', 'update', 'delete'],
35
+ options: ['list', 'find-first', 'search', 'get', 'create', 'update', 'delete'],
36
36
  },
37
37
  ]);
38
38
  return handleTableSubcommand(answer.subcommand, newArgv, prompter);
@@ -43,6 +43,10 @@ async function handleTableSubcommand(subcommand, argv, prompter) {
43
43
  switch (subcommand) {
44
44
  case 'list':
45
45
  return handleList(argv, prompter);
46
+ case 'find-first':
47
+ return handleFindFirst(argv, prompter);
48
+ case 'search':
49
+ return handleSearch(argv, prompter);
46
50
  case 'get':
47
51
  return handleGet(argv, prompter);
48
52
  case 'create':
@@ -56,22 +60,20 @@ async function handleTableSubcommand(subcommand, argv, prompter) {
56
60
  process.exit(1);
57
61
  }
58
62
  }
59
- async function handleList(_argv, _prompter) {
63
+ async function handleList(argv, _prompter) {
60
64
  try {
65
+ const defaultSelect = {
66
+ id: true,
67
+ username: true,
68
+ displayName: true,
69
+ profilePicture: true,
70
+ type: true,
71
+ createdAt: true,
72
+ updatedAt: true,
73
+ };
74
+ const findManyArgs = parseFindManyArgs(argv, defaultSelect);
61
75
  const client = getClient();
62
- const result = await client.user
63
- .findMany({
64
- select: {
65
- id: true,
66
- username: true,
67
- displayName: true,
68
- profilePicture: true,
69
- type: true,
70
- createdAt: true,
71
- updatedAt: true,
72
- },
73
- })
74
- .execute();
76
+ const result = await client.user.findMany(findManyArgs).execute();
75
77
  console.log(JSON.stringify(result, null, 2));
76
78
  }
77
79
  catch (error) {
@@ -82,6 +84,68 @@ async function handleList(_argv, _prompter) {
82
84
  process.exit(1);
83
85
  }
84
86
  }
87
+ async function handleFindFirst(argv, _prompter) {
88
+ try {
89
+ const defaultSelect = {
90
+ id: true,
91
+ username: true,
92
+ displayName: true,
93
+ profilePicture: true,
94
+ type: true,
95
+ createdAt: true,
96
+ updatedAt: true,
97
+ };
98
+ const findFirstArgs = parseFindFirstArgs(argv, defaultSelect);
99
+ const client = getClient();
100
+ const result = await client.user.findFirst(findFirstArgs).execute();
101
+ console.log(JSON.stringify(result, null, 2));
102
+ }
103
+ catch (error) {
104
+ console.error('Failed to find record.');
105
+ if (error instanceof Error) {
106
+ console.error(error.message);
107
+ }
108
+ process.exit(1);
109
+ }
110
+ }
111
+ async function handleSearch(argv, _prompter) {
112
+ try {
113
+ const query = Array.isArray(argv._) && argv._.length > 0 ? String(argv._[0]) : undefined;
114
+ if (!query) {
115
+ console.error('Error: search requires a <query> argument');
116
+ process.exit(1);
117
+ }
118
+ const searchWhere = {
119
+ searchTsv: {
120
+ query,
121
+ },
122
+ trgmDisplayName: {
123
+ value: query,
124
+ threshold: 0.3,
125
+ },
126
+ };
127
+ const defaultSelect = {
128
+ id: true,
129
+ username: true,
130
+ displayName: true,
131
+ profilePicture: true,
132
+ type: true,
133
+ createdAt: true,
134
+ updatedAt: true,
135
+ };
136
+ const findManyArgs = parseFindManyArgs(argv, defaultSelect, searchWhere);
137
+ const client = getClient();
138
+ const result = await client.user.findMany(findManyArgs).execute();
139
+ console.log(JSON.stringify(result, null, 2));
140
+ }
141
+ catch (error) {
142
+ console.error('Failed to search records.');
143
+ if (error instanceof Error) {
144
+ console.error(error.message);
145
+ }
146
+ process.exit(1);
147
+ }
148
+ }
85
149
  async function handleGet(argv, prompter) {
86
150
  try {
87
151
  const answers = await prompter.prompt(argv, [
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { extractFirst } from 'inquirerer';
7
7
  import { getClient } from '../executor';
8
- import { coerceAnswers, stripUndefined } from '../utils';
8
+ import { coerceAnswers, parseFindFirstArgs, parseFindManyArgs, stripUndefined } from '../utils';
9
9
  const fieldSchema = {
10
10
  id: 'uuid',
11
11
  databaseId: 'uuid',
@@ -15,7 +15,7 @@ const fieldSchema = {
15
15
  typeTableId: 'uuid',
16
16
  typeTableName: 'string',
17
17
  };
18
- const usage = '\nusers-module <command>\n\nCommands:\n list List all usersModule records\n get Get a usersModule by ID\n create Create a new usersModule\n update Update an existing usersModule\n delete Delete a usersModule\n\n --help, -h Show this help message\n';
18
+ const usage = '\nusers-module <command>\n\nCommands:\n list List usersModule records\n find-first Find first matching usersModule record\n get Get a usersModule by ID\n create Create a new usersModule\n update Update an existing usersModule\n delete Delete a usersModule\n\nList Options:\n --limit <n> Max number of records to return (forward pagination)\n --last <n> Number of records from the end (backward pagination)\n --after <cursor> Cursor for forward pagination\n --before <cursor> Cursor for backward pagination\n --offset <n> Number of records to skip\n --select <fields> Comma-separated list of fields to return\n --where.<field>.<op> Filter (dot-notation, e.g. --where.name.equalTo foo)\n --condition.<f>.<op> Condition filter (dot-notation)\n --orderBy <values> Comma-separated ordering values (e.g. NAME_ASC,CREATED_AT_DESC)\n\nFind-First Options:\n --select <fields> Comma-separated list of fields to return\n --where.<field>.<op> Filter (dot-notation, e.g. --where.status.equalTo active)\n --condition.<f>.<op> Condition filter (dot-notation)\n\n --help, -h Show this help message\n';
19
19
  export default async (argv, prompter, _options) => {
20
20
  if (argv.help || argv.h) {
21
21
  console.log(usage);
@@ -28,7 +28,7 @@ export default async (argv, prompter, _options) => {
28
28
  type: 'autocomplete',
29
29
  name: 'subcommand',
30
30
  message: 'What do you want to do?',
31
- options: ['list', 'get', 'create', 'update', 'delete'],
31
+ options: ['list', 'find-first', 'get', 'create', 'update', 'delete'],
32
32
  },
33
33
  ]);
34
34
  return handleTableSubcommand(answer.subcommand, newArgv, prompter);
@@ -39,6 +39,8 @@ async function handleTableSubcommand(subcommand, argv, prompter) {
39
39
  switch (subcommand) {
40
40
  case 'list':
41
41
  return handleList(argv, prompter);
42
+ case 'find-first':
43
+ return handleFindFirst(argv, prompter);
42
44
  case 'get':
43
45
  return handleGet(argv, prompter);
44
46
  case 'create':
@@ -52,22 +54,20 @@ async function handleTableSubcommand(subcommand, argv, prompter) {
52
54
  process.exit(1);
53
55
  }
54
56
  }
55
- async function handleList(_argv, _prompter) {
57
+ async function handleList(argv, _prompter) {
56
58
  try {
59
+ const defaultSelect = {
60
+ id: true,
61
+ databaseId: true,
62
+ schemaId: true,
63
+ tableId: true,
64
+ tableName: true,
65
+ typeTableId: true,
66
+ typeTableName: true,
67
+ };
68
+ const findManyArgs = parseFindManyArgs(argv, defaultSelect);
57
69
  const client = getClient();
58
- const result = await client.usersModule
59
- .findMany({
60
- select: {
61
- id: true,
62
- databaseId: true,
63
- schemaId: true,
64
- tableId: true,
65
- tableName: true,
66
- typeTableId: true,
67
- typeTableName: true,
68
- },
69
- })
70
- .execute();
70
+ const result = await client.usersModule.findMany(findManyArgs).execute();
71
71
  console.log(JSON.stringify(result, null, 2));
72
72
  }
73
73
  catch (error) {
@@ -78,6 +78,30 @@ async function handleList(_argv, _prompter) {
78
78
  process.exit(1);
79
79
  }
80
80
  }
81
+ async function handleFindFirst(argv, _prompter) {
82
+ try {
83
+ const defaultSelect = {
84
+ id: true,
85
+ databaseId: true,
86
+ schemaId: true,
87
+ tableId: true,
88
+ tableName: true,
89
+ typeTableId: true,
90
+ typeTableName: true,
91
+ };
92
+ const findFirstArgs = parseFindFirstArgs(argv, defaultSelect);
93
+ const client = getClient();
94
+ const result = await client.usersModule.findFirst(findFirstArgs).execute();
95
+ console.log(JSON.stringify(result, null, 2));
96
+ }
97
+ catch (error) {
98
+ console.error('Failed to find record.');
99
+ if (error instanceof Error) {
100
+ console.error(error.message);
101
+ }
102
+ process.exit(1);
103
+ }
104
+ }
81
105
  async function handleGet(argv, prompter) {
82
106
  try {
83
107
  const answers = await prompter.prompt(argv, [
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { extractFirst } from 'inquirerer';
7
7
  import { getClient } from '../executor';
8
- import { coerceAnswers, stripUndefined } from '../utils';
8
+ import { coerceAnswers, parseFindFirstArgs, parseFindManyArgs, stripUndefined } from '../utils';
9
9
  const fieldSchema = {
10
10
  id: 'uuid',
11
11
  databaseId: 'uuid',
@@ -15,7 +15,7 @@ const fieldSchema = {
15
15
  withGrantOption: 'boolean',
16
16
  isGrant: 'boolean',
17
17
  };
18
- const usage = '\nview-grant <command>\n\nCommands:\n list List all viewGrant records\n get Get a viewGrant by ID\n create Create a new viewGrant\n update Update an existing viewGrant\n delete Delete a viewGrant\n\n --help, -h Show this help message\n';
18
+ const usage = '\nview-grant <command>\n\nCommands:\n list List viewGrant records\n find-first Find first matching viewGrant record\n get Get a viewGrant by ID\n create Create a new viewGrant\n update Update an existing viewGrant\n delete Delete a viewGrant\n\nList Options:\n --limit <n> Max number of records to return (forward pagination)\n --last <n> Number of records from the end (backward pagination)\n --after <cursor> Cursor for forward pagination\n --before <cursor> Cursor for backward pagination\n --offset <n> Number of records to skip\n --select <fields> Comma-separated list of fields to return\n --where.<field>.<op> Filter (dot-notation, e.g. --where.name.equalTo foo)\n --condition.<f>.<op> Condition filter (dot-notation)\n --orderBy <values> Comma-separated ordering values (e.g. NAME_ASC,CREATED_AT_DESC)\n\nFind-First Options:\n --select <fields> Comma-separated list of fields to return\n --where.<field>.<op> Filter (dot-notation, e.g. --where.status.equalTo active)\n --condition.<f>.<op> Condition filter (dot-notation)\n\n --help, -h Show this help message\n';
19
19
  export default async (argv, prompter, _options) => {
20
20
  if (argv.help || argv.h) {
21
21
  console.log(usage);
@@ -28,7 +28,7 @@ export default async (argv, prompter, _options) => {
28
28
  type: 'autocomplete',
29
29
  name: 'subcommand',
30
30
  message: 'What do you want to do?',
31
- options: ['list', 'get', 'create', 'update', 'delete'],
31
+ options: ['list', 'find-first', 'get', 'create', 'update', 'delete'],
32
32
  },
33
33
  ]);
34
34
  return handleTableSubcommand(answer.subcommand, newArgv, prompter);
@@ -39,6 +39,8 @@ async function handleTableSubcommand(subcommand, argv, prompter) {
39
39
  switch (subcommand) {
40
40
  case 'list':
41
41
  return handleList(argv, prompter);
42
+ case 'find-first':
43
+ return handleFindFirst(argv, prompter);
42
44
  case 'get':
43
45
  return handleGet(argv, prompter);
44
46
  case 'create':
@@ -52,22 +54,20 @@ async function handleTableSubcommand(subcommand, argv, prompter) {
52
54
  process.exit(1);
53
55
  }
54
56
  }
55
- async function handleList(_argv, _prompter) {
57
+ async function handleList(argv, _prompter) {
56
58
  try {
59
+ const defaultSelect = {
60
+ id: true,
61
+ databaseId: true,
62
+ viewId: true,
63
+ granteeName: true,
64
+ privilege: true,
65
+ withGrantOption: true,
66
+ isGrant: true,
67
+ };
68
+ const findManyArgs = parseFindManyArgs(argv, defaultSelect);
57
69
  const client = getClient();
58
- const result = await client.viewGrant
59
- .findMany({
60
- select: {
61
- id: true,
62
- databaseId: true,
63
- viewId: true,
64
- granteeName: true,
65
- privilege: true,
66
- withGrantOption: true,
67
- isGrant: true,
68
- },
69
- })
70
- .execute();
70
+ const result = await client.viewGrant.findMany(findManyArgs).execute();
71
71
  console.log(JSON.stringify(result, null, 2));
72
72
  }
73
73
  catch (error) {
@@ -78,6 +78,30 @@ async function handleList(_argv, _prompter) {
78
78
  process.exit(1);
79
79
  }
80
80
  }
81
+ async function handleFindFirst(argv, _prompter) {
82
+ try {
83
+ const defaultSelect = {
84
+ id: true,
85
+ databaseId: true,
86
+ viewId: true,
87
+ granteeName: true,
88
+ privilege: true,
89
+ withGrantOption: true,
90
+ isGrant: true,
91
+ };
92
+ const findFirstArgs = parseFindFirstArgs(argv, defaultSelect);
93
+ const client = getClient();
94
+ const result = await client.viewGrant.findFirst(findFirstArgs).execute();
95
+ console.log(JSON.stringify(result, null, 2));
96
+ }
97
+ catch (error) {
98
+ console.error('Failed to find record.');
99
+ if (error instanceof Error) {
100
+ console.error(error.message);
101
+ }
102
+ process.exit(1);
103
+ }
104
+ }
81
105
  async function handleGet(argv, prompter) {
82
106
  try {
83
107
  const answers = await prompter.prompt(argv, [
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { extractFirst } from 'inquirerer';
7
7
  import { getClient } from '../executor';
8
- import { coerceAnswers, stripUndefined } from '../utils';
8
+ import { coerceAnswers, parseFindFirstArgs, parseFindManyArgs, stripUndefined } from '../utils';
9
9
  const fieldSchema = {
10
10
  id: 'uuid',
11
11
  databaseId: 'uuid',
@@ -14,7 +14,7 @@ const fieldSchema = {
14
14
  event: 'string',
15
15
  action: 'string',
16
16
  };
17
- const usage = '\nview-rule <command>\n\nCommands:\n list List all viewRule records\n get Get a viewRule by ID\n create Create a new viewRule\n update Update an existing viewRule\n delete Delete a viewRule\n\n --help, -h Show this help message\n';
17
+ const usage = '\nview-rule <command>\n\nCommands:\n list List viewRule records\n find-first Find first matching viewRule record\n get Get a viewRule by ID\n create Create a new viewRule\n update Update an existing viewRule\n delete Delete a viewRule\n\nList Options:\n --limit <n> Max number of records to return (forward pagination)\n --last <n> Number of records from the end (backward pagination)\n --after <cursor> Cursor for forward pagination\n --before <cursor> Cursor for backward pagination\n --offset <n> Number of records to skip\n --select <fields> Comma-separated list of fields to return\n --where.<field>.<op> Filter (dot-notation, e.g. --where.name.equalTo foo)\n --condition.<f>.<op> Condition filter (dot-notation)\n --orderBy <values> Comma-separated ordering values (e.g. NAME_ASC,CREATED_AT_DESC)\n\nFind-First Options:\n --select <fields> Comma-separated list of fields to return\n --where.<field>.<op> Filter (dot-notation, e.g. --where.status.equalTo active)\n --condition.<f>.<op> Condition filter (dot-notation)\n\n --help, -h Show this help message\n';
18
18
  export default async (argv, prompter, _options) => {
19
19
  if (argv.help || argv.h) {
20
20
  console.log(usage);
@@ -27,7 +27,7 @@ export default async (argv, prompter, _options) => {
27
27
  type: 'autocomplete',
28
28
  name: 'subcommand',
29
29
  message: 'What do you want to do?',
30
- options: ['list', 'get', 'create', 'update', 'delete'],
30
+ options: ['list', 'find-first', 'get', 'create', 'update', 'delete'],
31
31
  },
32
32
  ]);
33
33
  return handleTableSubcommand(answer.subcommand, newArgv, prompter);
@@ -38,6 +38,8 @@ async function handleTableSubcommand(subcommand, argv, prompter) {
38
38
  switch (subcommand) {
39
39
  case 'list':
40
40
  return handleList(argv, prompter);
41
+ case 'find-first':
42
+ return handleFindFirst(argv, prompter);
41
43
  case 'get':
42
44
  return handleGet(argv, prompter);
43
45
  case 'create':
@@ -51,21 +53,19 @@ async function handleTableSubcommand(subcommand, argv, prompter) {
51
53
  process.exit(1);
52
54
  }
53
55
  }
54
- async function handleList(_argv, _prompter) {
56
+ async function handleList(argv, _prompter) {
55
57
  try {
58
+ const defaultSelect = {
59
+ id: true,
60
+ databaseId: true,
61
+ viewId: true,
62
+ name: true,
63
+ event: true,
64
+ action: true,
65
+ };
66
+ const findManyArgs = parseFindManyArgs(argv, defaultSelect);
56
67
  const client = getClient();
57
- const result = await client.viewRule
58
- .findMany({
59
- select: {
60
- id: true,
61
- databaseId: true,
62
- viewId: true,
63
- name: true,
64
- event: true,
65
- action: true,
66
- },
67
- })
68
- .execute();
68
+ const result = await client.viewRule.findMany(findManyArgs).execute();
69
69
  console.log(JSON.stringify(result, null, 2));
70
70
  }
71
71
  catch (error) {
@@ -76,6 +76,29 @@ async function handleList(_argv, _prompter) {
76
76
  process.exit(1);
77
77
  }
78
78
  }
79
+ async function handleFindFirst(argv, _prompter) {
80
+ try {
81
+ const defaultSelect = {
82
+ id: true,
83
+ databaseId: true,
84
+ viewId: true,
85
+ name: true,
86
+ event: true,
87
+ action: true,
88
+ };
89
+ const findFirstArgs = parseFindFirstArgs(argv, defaultSelect);
90
+ const client = getClient();
91
+ const result = await client.viewRule.findFirst(findFirstArgs).execute();
92
+ console.log(JSON.stringify(result, null, 2));
93
+ }
94
+ catch (error) {
95
+ console.error('Failed to find record.');
96
+ if (error instanceof Error) {
97
+ console.error(error.message);
98
+ }
99
+ process.exit(1);
100
+ }
101
+ }
79
102
  async function handleGet(argv, prompter) {
80
103
  try {
81
104
  const answers = await prompter.prompt(argv, [
@@ -5,14 +5,14 @@
5
5
  */
6
6
  import { extractFirst } from 'inquirerer';
7
7
  import { getClient } from '../executor';
8
- import { coerceAnswers, stripUndefined } from '../utils';
8
+ import { coerceAnswers, parseFindFirstArgs, parseFindManyArgs, stripUndefined } from '../utils';
9
9
  const fieldSchema = {
10
10
  id: 'uuid',
11
11
  viewId: 'uuid',
12
12
  tableId: 'uuid',
13
13
  joinOrder: 'int',
14
14
  };
15
- const usage = '\nview-table <command>\n\nCommands:\n list List all viewTable records\n get Get a viewTable by ID\n create Create a new viewTable\n update Update an existing viewTable\n delete Delete a viewTable\n\n --help, -h Show this help message\n';
15
+ const usage = '\nview-table <command>\n\nCommands:\n list List viewTable records\n find-first Find first matching viewTable record\n get Get a viewTable by ID\n create Create a new viewTable\n update Update an existing viewTable\n delete Delete a viewTable\n\nList Options:\n --limit <n> Max number of records to return (forward pagination)\n --last <n> Number of records from the end (backward pagination)\n --after <cursor> Cursor for forward pagination\n --before <cursor> Cursor for backward pagination\n --offset <n> Number of records to skip\n --select <fields> Comma-separated list of fields to return\n --where.<field>.<op> Filter (dot-notation, e.g. --where.name.equalTo foo)\n --condition.<f>.<op> Condition filter (dot-notation)\n --orderBy <values> Comma-separated ordering values (e.g. NAME_ASC,CREATED_AT_DESC)\n\nFind-First Options:\n --select <fields> Comma-separated list of fields to return\n --where.<field>.<op> Filter (dot-notation, e.g. --where.status.equalTo active)\n --condition.<f>.<op> Condition filter (dot-notation)\n\n --help, -h Show this help message\n';
16
16
  export default async (argv, prompter, _options) => {
17
17
  if (argv.help || argv.h) {
18
18
  console.log(usage);
@@ -25,7 +25,7 @@ export default async (argv, prompter, _options) => {
25
25
  type: 'autocomplete',
26
26
  name: 'subcommand',
27
27
  message: 'What do you want to do?',
28
- options: ['list', 'get', 'create', 'update', 'delete'],
28
+ options: ['list', 'find-first', 'get', 'create', 'update', 'delete'],
29
29
  },
30
30
  ]);
31
31
  return handleTableSubcommand(answer.subcommand, newArgv, prompter);
@@ -36,6 +36,8 @@ async function handleTableSubcommand(subcommand, argv, prompter) {
36
36
  switch (subcommand) {
37
37
  case 'list':
38
38
  return handleList(argv, prompter);
39
+ case 'find-first':
40
+ return handleFindFirst(argv, prompter);
39
41
  case 'get':
40
42
  return handleGet(argv, prompter);
41
43
  case 'create':
@@ -49,19 +51,17 @@ async function handleTableSubcommand(subcommand, argv, prompter) {
49
51
  process.exit(1);
50
52
  }
51
53
  }
52
- async function handleList(_argv, _prompter) {
54
+ async function handleList(argv, _prompter) {
53
55
  try {
56
+ const defaultSelect = {
57
+ id: true,
58
+ viewId: true,
59
+ tableId: true,
60
+ joinOrder: true,
61
+ };
62
+ const findManyArgs = parseFindManyArgs(argv, defaultSelect);
54
63
  const client = getClient();
55
- const result = await client.viewTable
56
- .findMany({
57
- select: {
58
- id: true,
59
- viewId: true,
60
- tableId: true,
61
- joinOrder: true,
62
- },
63
- })
64
- .execute();
64
+ const result = await client.viewTable.findMany(findManyArgs).execute();
65
65
  console.log(JSON.stringify(result, null, 2));
66
66
  }
67
67
  catch (error) {
@@ -72,6 +72,27 @@ async function handleList(_argv, _prompter) {
72
72
  process.exit(1);
73
73
  }
74
74
  }
75
+ async function handleFindFirst(argv, _prompter) {
76
+ try {
77
+ const defaultSelect = {
78
+ id: true,
79
+ viewId: true,
80
+ tableId: true,
81
+ joinOrder: true,
82
+ };
83
+ const findFirstArgs = parseFindFirstArgs(argv, defaultSelect);
84
+ const client = getClient();
85
+ const result = await client.viewTable.findFirst(findFirstArgs).execute();
86
+ console.log(JSON.stringify(result, null, 2));
87
+ }
88
+ catch (error) {
89
+ console.error('Failed to find record.');
90
+ if (error instanceof Error) {
91
+ console.error(error.message);
92
+ }
93
+ process.exit(1);
94
+ }
95
+ }
75
96
  async function handleGet(argv, prompter) {
76
97
  try {
77
98
  const answers = await prompter.prompt(argv, [
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { extractFirst } from 'inquirerer';
7
7
  import { getClient } from '../executor';
8
- import { coerceAnswers, stripUndefined } from '../utils';
8
+ import { coerceAnswers, parseFindFirstArgs, parseFindManyArgs, stripUndefined } from '../utils';
9
9
  const fieldSchema = {
10
10
  id: 'uuid',
11
11
  databaseId: 'uuid',
@@ -24,7 +24,7 @@ const fieldSchema = {
24
24
  scope: 'int',
25
25
  tags: 'string',
26
26
  };
27
- const usage = '\nview <command>\n\nCommands:\n list List all view records\n get Get a view by ID\n create Create a new view\n update Update an existing view\n delete Delete a view\n\n --help, -h Show this help message\n';
27
+ const usage = '\nview <command>\n\nCommands:\n list List view records\n find-first Find first matching view record\n get Get a view by ID\n create Create a new view\n update Update an existing view\n delete Delete a view\n\nList Options:\n --limit <n> Max number of records to return (forward pagination)\n --last <n> Number of records from the end (backward pagination)\n --after <cursor> Cursor for forward pagination\n --before <cursor> Cursor for backward pagination\n --offset <n> Number of records to skip\n --select <fields> Comma-separated list of fields to return\n --where.<field>.<op> Filter (dot-notation, e.g. --where.name.equalTo foo)\n --condition.<f>.<op> Condition filter (dot-notation)\n --orderBy <values> Comma-separated ordering values (e.g. NAME_ASC,CREATED_AT_DESC)\n\nFind-First Options:\n --select <fields> Comma-separated list of fields to return\n --where.<field>.<op> Filter (dot-notation, e.g. --where.status.equalTo active)\n --condition.<f>.<op> Condition filter (dot-notation)\n\n --help, -h Show this help message\n';
28
28
  export default async (argv, prompter, _options) => {
29
29
  if (argv.help || argv.h) {
30
30
  console.log(usage);
@@ -37,7 +37,7 @@ export default async (argv, prompter, _options) => {
37
37
  type: 'autocomplete',
38
38
  name: 'subcommand',
39
39
  message: 'What do you want to do?',
40
- options: ['list', 'get', 'create', 'update', 'delete'],
40
+ options: ['list', 'find-first', 'get', 'create', 'update', 'delete'],
41
41
  },
42
42
  ]);
43
43
  return handleTableSubcommand(answer.subcommand, newArgv, prompter);
@@ -48,6 +48,8 @@ async function handleTableSubcommand(subcommand, argv, prompter) {
48
48
  switch (subcommand) {
49
49
  case 'list':
50
50
  return handleList(argv, prompter);
51
+ case 'find-first':
52
+ return handleFindFirst(argv, prompter);
51
53
  case 'get':
52
54
  return handleGet(argv, prompter);
53
55
  case 'create':
@@ -61,31 +63,29 @@ async function handleTableSubcommand(subcommand, argv, prompter) {
61
63
  process.exit(1);
62
64
  }
63
65
  }
64
- async function handleList(_argv, _prompter) {
66
+ async function handleList(argv, _prompter) {
65
67
  try {
68
+ const defaultSelect = {
69
+ id: true,
70
+ databaseId: true,
71
+ schemaId: true,
72
+ name: true,
73
+ tableId: true,
74
+ viewType: true,
75
+ data: true,
76
+ filterType: true,
77
+ filterData: true,
78
+ securityInvoker: true,
79
+ isReadOnly: true,
80
+ smartTags: true,
81
+ category: true,
82
+ module: true,
83
+ scope: true,
84
+ tags: true,
85
+ };
86
+ const findManyArgs = parseFindManyArgs(argv, defaultSelect);
66
87
  const client = getClient();
67
- const result = await client.view
68
- .findMany({
69
- select: {
70
- id: true,
71
- databaseId: true,
72
- schemaId: true,
73
- name: true,
74
- tableId: true,
75
- viewType: true,
76
- data: true,
77
- filterType: true,
78
- filterData: true,
79
- securityInvoker: true,
80
- isReadOnly: true,
81
- smartTags: true,
82
- category: true,
83
- module: true,
84
- scope: true,
85
- tags: true,
86
- },
87
- })
88
- .execute();
88
+ const result = await client.view.findMany(findManyArgs).execute();
89
89
  console.log(JSON.stringify(result, null, 2));
90
90
  }
91
91
  catch (error) {
@@ -96,6 +96,39 @@ async function handleList(_argv, _prompter) {
96
96
  process.exit(1);
97
97
  }
98
98
  }
99
+ async function handleFindFirst(argv, _prompter) {
100
+ try {
101
+ const defaultSelect = {
102
+ id: true,
103
+ databaseId: true,
104
+ schemaId: true,
105
+ name: true,
106
+ tableId: true,
107
+ viewType: true,
108
+ data: true,
109
+ filterType: true,
110
+ filterData: true,
111
+ securityInvoker: true,
112
+ isReadOnly: true,
113
+ smartTags: true,
114
+ category: true,
115
+ module: true,
116
+ scope: true,
117
+ tags: true,
118
+ };
119
+ const findFirstArgs = parseFindFirstArgs(argv, defaultSelect);
120
+ const client = getClient();
121
+ const result = await client.view.findFirst(findFirstArgs).execute();
122
+ console.log(JSON.stringify(result, null, 2));
123
+ }
124
+ catch (error) {
125
+ console.error('Failed to find record.');
126
+ if (error instanceof Error) {
127
+ console.error(error.message);
128
+ }
129
+ process.exit(1);
130
+ }
131
+ }
99
132
  async function handleGet(argv, prompter) {
100
133
  try {
101
134
  const answers = await prompter.prompt(argv, [