betterstart-cli 0.0.104 → 0.0.105

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 (140) hide show
  1. package/dist/cli.js +6416 -5203
  2. package/dist/cli.js.map +1 -1
  3. package/package.json +1 -1
  4. package/dist/assets/adapters/next/templates/renderers/commands/init/banner-art.ts +0 -7
  5. package/dist/assets/adapters/next/templates/renderers/commands/init/verify-database-reachable.ts +0 -30
  6. package/dist/assets/adapters/next/templates/renderers/commands/seed/build-seed-script.ts +0 -171
  7. package/dist/assets/adapters/next/templates/renderers/generators/actions/action-helpers/build-authorship-alias-block.ts +0 -4
  8. package/dist/assets/adapters/next/templates/renderers/generators/actions/action-helpers/build-authorship-data-fields.ts +0 -4
  9. package/dist/assets/adapters/next/templates/renderers/generators/actions/action-helpers/build-format-action-date-source.ts +0 -18
  10. package/dist/assets/adapters/next/templates/renderers/generators/actions/action-helpers/build-read-select-option-type.ts +0 -6
  11. package/dist/assets/adapters/next/templates/renderers/generators/actions/action-helpers/build-relationship-data-types.ts +0 -25
  12. package/dist/assets/adapters/next/templates/renderers/generators/actions/action-helpers/build-result-mapping.ts +0 -62
  13. package/dist/assets/adapters/next/templates/renderers/generators/actions/action-helpers/generate-populate-list-rels-function.ts +0 -50
  14. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/build-restore-many-to-many-statements.ts +0 -27
  15. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/build-select-option-types.ts +0 -37
  16. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/gen-bulk-sort-order-content.ts +0 -93
  17. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/gen-create-content.ts +0 -157
  18. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/gen-create-select-option-content.ts +0 -134
  19. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/gen-delete-bulk-content.ts +0 -85
  20. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/gen-delete-content.ts +0 -66
  21. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/gen-distinct-files.ts +0 -45
  22. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/gen-get-by-id-content.ts +0 -55
  23. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/gen-get-by-slug-content.ts +0 -55
  24. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/gen-get-plural-content.ts +0 -106
  25. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/gen-get-select-options-content.ts +0 -55
  26. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/gen-get-versions-content.ts +0 -19
  27. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/gen-m2m-files.ts +0 -151
  28. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/gen-restore-content.ts +0 -123
  29. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/gen-update-content.ts +0 -187
  30. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/generate-resolve-media-function.ts +0 -40
  31. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/generate-slug-helpers.ts +0 -73
  32. package/dist/assets/adapters/next/templates/renderers/generators/actions/entity-file-contents/generate-version-snapshot-helpers.ts +0 -104
  33. package/dist/assets/adapters/next/templates/renderers/generators/actions/lifecycle-hook-emissions/lifecycle-context.ts +0 -22
  34. package/dist/assets/adapters/next/templates/renderers/generators/actions/lifecycle-hook-emissions/lifecycle-hook-import.ts +0 -4
  35. package/dist/assets/adapters/next/templates/renderers/generators/actions/markdown-renderer.ts +0 -411
  36. package/dist/assets/adapters/next/templates/renderers/generators/actions/select-fields-resolver.ts +0 -99
  37. package/dist/assets/adapters/next/templates/renderers/generators/actions/single-actions/generate-single-actions.ts +0 -292
  38. package/dist/assets/adapters/next/templates/renderers/generators/columns/column-defs/generate-authorship-value.ts +0 -8
  39. package/dist/assets/adapters/next/templates/renderers/generators/columns/column-defs/generate-column-def.ts +0 -297
  40. package/dist/assets/adapters/next/templates/renderers/generators/columns/column-defs/generate-first-column-def.ts +0 -483
  41. package/dist/assets/adapters/next/templates/renderers/generators/columns/column-defs/generate-image-cell-media.ts +0 -38
  42. package/dist/assets/adapters/next/templates/renderers/generators/columns/column-defs/generate-image-element.ts +0 -22
  43. package/dist/assets/adapters/next/templates/renderers/generators/columns/column-defs/generate-relationship-label.ts +0 -26
  44. package/dist/assets/adapters/next/templates/renderers/generators/columns/column-defs/generate-select-label.ts +0 -17
  45. package/dist/assets/adapters/next/templates/renderers/generators/columns/custom-cell.ts +0 -24
  46. package/dist/assets/adapters/next/templates/renderers/generators/columns/generate-columns.ts +0 -55
  47. package/dist/assets/adapters/next/templates/renderers/generators/create-page.ts +0 -16
  48. package/dist/assets/adapters/next/templates/renderers/generators/database/generate-database.ts +0 -5
  49. package/dist/assets/adapters/next/templates/renderers/generators/database/generate-junction-table.ts +0 -27
  50. package/dist/assets/adapters/next/templates/renderers/generators/database/generate-select-options-table.ts +0 -35
  51. package/dist/assets/adapters/next/templates/renderers/generators/database/generate-table-definition.ts +0 -25
  52. package/dist/assets/adapters/next/templates/renderers/generators/dev-mode-integration/build-entity-dev-mode-snippets.ts +0 -180
  53. package/dist/assets/adapters/next/templates/renderers/generators/dev-mode-integration/build-form-dev-mode-snippets.ts +0 -97
  54. package/dist/assets/adapters/next/templates/renderers/generators/dev-mode-integration/build-single-dev-mode-snippets.ts +0 -60
  55. package/dist/assets/adapters/next/templates/renderers/generators/dev-mode-integration/create-dev-mode-integration-artifact.ts +0 -89
  56. package/dist/assets/adapters/next/templates/renderers/generators/dev-mode-integration/lifecycle-hook-code.ts +0 -55
  57. package/dist/assets/adapters/next/templates/renderers/generators/edit-page.ts +0 -33
  58. package/dist/assets/adapters/next/templates/renderers/generators/email-template/generate-email-template.ts +0 -248
  59. package/dist/assets/adapters/next/templates/renderers/generators/email-template/generate-field-value.ts +0 -31
  60. package/dist/assets/adapters/next/templates/renderers/generators/emitted-helpers.ts +0 -16
  61. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/generate-icon-postfix.ts +0 -27
  62. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/render-boolean-field.ts +0 -47
  63. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/render-creatable-select-field.ts +0 -122
  64. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/render-date-field.ts +0 -47
  65. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/render-default-field.ts +0 -53
  66. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/render-gallery-field.ts +0 -46
  67. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/render-group-field.ts +0 -16
  68. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/render-icon-field.ts +0 -31
  69. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/render-markdown-field.ts +0 -50
  70. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/render-media-field.ts +0 -47
  71. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/render-multi-relationship-field.ts +0 -91
  72. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/render-multi-select-field.ts +0 -219
  73. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/render-number-field.ts +0 -48
  74. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/render-richtext-field.ts +0 -50
  75. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/render-select-field.ts +0 -61
  76. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/render-separator-field.ts +0 -16
  77. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/render-single-relationship-field.ts +0 -93
  78. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx/render-textarea-field.ts +0 -53
  79. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx-nested/render-list-field.ts +0 -163
  80. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx-nested/render-nested-field.ts +0 -164
  81. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx-nested/render-nested-object-list-field.ts +0 -59
  82. package/dist/assets/adapters/next/templates/renderers/generators/form/field-jsx-nested/render-text-input-field.ts +0 -27
  83. package/dist/assets/adapters/next/templates/renderers/generators/form/form-entity/generate-form.ts +0 -822
  84. package/dist/assets/adapters/next/templates/renderers/generators/form/form-shared/build-default-value-from-sync-functions.ts +0 -41
  85. package/dist/assets/adapters/next/templates/renderers/generators/form/form-shared/build-ui-imports.ts +0 -58
  86. package/dist/assets/adapters/next/templates/renderers/generators/form/form-shared/generate-default-value.ts +0 -67
  87. package/dist/assets/adapters/next/templates/renderers/generators/form/form-shared/generate-nested-list-default-value.ts +0 -13
  88. package/dist/assets/adapters/next/templates/renderers/generators/form/form-shared/label-with-description.ts +0 -14
  89. package/dist/assets/adapters/next/templates/renderers/generators/form/form-shared/render-tabs-trigger.ts +0 -18
  90. package/dist/assets/adapters/next/templates/renderers/generators/form/form-shared/select-read-values-expression.ts +0 -21
  91. package/dist/assets/adapters/next/templates/renderers/generators/form/form-single/build-group-creatable-select-handlers.ts +0 -67
  92. package/dist/assets/adapters/next/templates/renderers/generators/form/form-single/build-group-creatable-select-state.ts +0 -29
  93. package/dist/assets/adapters/next/templates/renderers/generators/form/form-single/build-group-field-array-hooks.ts +0 -13
  94. package/dist/assets/adapters/next/templates/renderers/generators/form/form-single/build-group-fields-jsx.ts +0 -30
  95. package/dist/assets/adapters/next/templates/renderers/generators/form/form-single/generate-card-component.ts +0 -129
  96. package/dist/assets/adapters/next/templates/renderers/generators/form/form-single/generate-single-form.ts +0 -66
  97. package/dist/assets/adapters/next/templates/renderers/generators/form-admin/admin-columns/generate-column-def.ts +0 -72
  98. package/dist/assets/adapters/next/templates/renderers/generators/form-admin/admin-columns/generate-columns.ts +0 -89
  99. package/dist/assets/adapters/next/templates/renderers/generators/form-admin/admin-page/generate-page.ts +0 -23
  100. package/dist/assets/adapters/next/templates/renderers/generators/form-admin/admin-page-content.ts +0 -246
  101. package/dist/assets/adapters/next/templates/renderers/generators/form-admin/admin-submission-drawer.ts +0 -216
  102. package/dist/assets/adapters/next/templates/renderers/generators/form-admin/admin-table.ts +0 -273
  103. package/dist/assets/adapters/next/templates/renderers/generators/form-pipeline/form-actions/exclusive-date-upper-bound-helper.ts +0 -11
  104. package/dist/assets/adapters/next/templates/renderers/generators/form-pipeline/form-actions/generate-form-actions.ts +0 -505
  105. package/dist/assets/adapters/next/templates/renderers/generators/form-pipeline/form-component-multistep/build-component-source.ts +0 -197
  106. package/dist/assets/adapters/next/templates/renderers/generators/form-pipeline/form-component-shared/build-field-error-helper.ts +0 -16
  107. package/dist/assets/adapters/next/templates/renderers/generators/form-pipeline/form-component-shared/error-message-line.ts +0 -13
  108. package/dist/assets/adapters/next/templates/renderers/generators/form-pipeline/form-component-shared/generate-field-jsx.ts +0 -226
  109. package/dist/assets/adapters/next/templates/renderers/generators/form-pipeline/form-component-shared/generate-file-upload-field-jsx.ts +0 -41
  110. package/dist/assets/adapters/next/templates/renderers/generators/form-pipeline/form-component-shared/generate-list-field-jsx.ts +0 -160
  111. package/dist/assets/adapters/next/templates/renderers/generators/form-pipeline/form-component-shared/generate-multiselect-field-jsx.ts +0 -40
  112. package/dist/assets/adapters/next/templates/renderers/generators/form-pipeline/form-component-shared/generate-number-field-jsx.ts +0 -41
  113. package/dist/assets/adapters/next/templates/renderers/generators/form-pipeline/form-component-shared/generate-text-field-jsx.ts +0 -39
  114. package/dist/assets/adapters/next/templates/renderers/generators/form-pipeline/form-component-shared/label-with-description-line.ts +0 -14
  115. package/dist/assets/adapters/next/templates/renderers/generators/form-pipeline/form-component-single/build-single-step-form-component-source.ts +0 -100
  116. package/dist/assets/adapters/next/templates/renderers/generators/form-pipeline/form-database.ts +0 -29
  117. package/dist/assets/adapters/next/templates/renderers/generators/form-pipeline/form-hook.ts +0 -142
  118. package/dist/assets/adapters/next/templates/renderers/generators/hook/generate-hook.ts +0 -169
  119. package/dist/assets/adapters/next/templates/renderers/generators/hook/generate-single-hook.ts +0 -30
  120. package/dist/assets/adapters/next/templates/renderers/generators/navigation-extract.ts +0 -19
  121. package/dist/assets/adapters/next/templates/renderers/generators/page-content/generate-page-content.ts +0 -419
  122. package/dist/assets/adapters/next/templates/renderers/generators/page.ts +0 -24
  123. package/dist/assets/adapters/next/templates/renderers/generators/row-actions-emitters/build-delete-dialog-source.ts +0 -108
  124. package/dist/assets/adapters/next/templates/renderers/generators/row-actions-emitters/build-row-actions-source.ts +0 -61
  125. package/dist/assets/adapters/next/templates/renderers/generators/single-page.ts +0 -59
  126. package/dist/assets/adapters/next/templates/renderers/generators/sortable-header/build-sort-label-expr.ts +0 -9
  127. package/dist/assets/adapters/next/templates/renderers/generators/sortable-header/build-sortable-header-button-jsx.ts +0 -20
  128. package/dist/assets/adapters/next/templates/renderers/generators/sortable-header/build-sortable-header-def.ts +0 -14
  129. package/dist/assets/adapters/next/templates/renderers/generators/table.ts +0 -284
  130. package/dist/assets/adapters/next/templates/renderers/generators/thankyou-email-template.ts +0 -110
  131. package/dist/assets/adapters/next/templates/renderers/generators/webhook-events/render-extract.ts +0 -14
  132. package/dist/assets/adapters/next/templates/renderers/init/scaffolders/next-config/create-next-config-template.ts +0 -48
  133. package/dist/assets/adapters/next/templates/renderers/init/scaffolders/tailwind/admin-shadow-input-utility.ts +0 -9
  134. package/dist/assets/adapters/next/templates/renderers/init/scaffolders/tailwind/admin-theme-block.ts +0 -42
  135. package/dist/assets/adapters/next/templates/renderers/init/templates/app/admin.ts +0 -12
  136. package/dist/assets/adapters/next/templates/renderers/integration-runtime/render-core-email-provider.ts +0 -27
  137. package/dist/assets/adapters/next/templates/renderers/integration-runtime/render-core-storage-provider.ts +0 -27
  138. package/dist/assets/adapters/next/templates/renderers/snapshots/barrels/render-db-barrel.ts +0 -8
  139. package/dist/assets/adapters/next/templates/renderers/snapshots/barrels/render-navigation-barrel.ts +0 -63
  140. package/dist/assets/adapters/next/templates/renderers/snapshots/barrels/render-webhook-events-barrel.ts +0 -16
@@ -1,29 +0,0 @@
1
- export function renderFormDatabaseImportsTemplate({
2
- imports,
3
- tableName,
4
- toPascalCase,
5
- fieldDefs,
6
- customFieldsCol
7
- }: {
8
- imports: string
9
- tableName: string
10
- toPascalCase: string
11
- fieldDefs: string
12
- customFieldsCol: string
13
- }): string {
14
- return `import { sql } from 'drizzle-orm'
15
- import {
16
- ${imports}
17
- } from 'drizzle-orm/pg-core'
18
-
19
- export const ${tableName} = pgTable('${toPascalCase}Submissions', {
20
- id: uuid().defaultRandom().primaryKey().notNull(),
21
- ${fieldDefs}${customFieldsCol}
22
- ipAddress: text(),
23
- userAgent: text(),
24
- submittedAt: timestamp({ precision: 3, mode: 'string' }).default(sql\`CURRENT_TIMESTAMP\`).notNull(),
25
- createdAt: timestamp({ precision: 3, mode: 'string' }).default(sql\`CURRENT_TIMESTAMP\`).notNull(),
26
- updatedAt: timestamp({ precision: 3, mode: 'string' }).default(sql\`CURRENT_TIMESTAMP\`).notNull()
27
- })
28
- `
29
- }
@@ -1,142 +0,0 @@
1
- export function renderFormHookGeneratedFunctionTemplate({
2
- submissionActionImports,
3
- actionImportPath,
4
- pascal,
5
- camel,
6
- successMsg,
7
- hasExportCreateObjectUrl
8
- }: {
9
- submissionActionImports: string
10
- actionImportPath: string
11
- pascal: string
12
- camel: string
13
- successMsg: string
14
- hasExportCreateObjectUrl: string
15
- }): string {
16
- return `import {
17
- ${submissionActionImports}
18
- } from '@admin/actions/${actionImportPath}'
19
- import type {
20
- Create${pascal}SubmissionInput,
21
- Get${pascal}SubmissionsFilters
22
- } from '@admin/actions/${actionImportPath}'
23
- import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'
24
- import { toast } from 'sonner'
25
-
26
- export function use${pascal}Submissions(
27
- search?: string,
28
- submittedAtFrom?: string,
29
- submittedAtTo?: string,
30
- page?: number,
31
- pageSize?: number,
32
- orderBy?: string,
33
- orderDirection?: 'asc' | 'desc'
34
- ) {
35
- return useQuery({
36
- queryKey: [
37
- '${camel}-submissions',
38
- search ?? '',
39
- submittedAtFrom ?? '',
40
- submittedAtTo ?? '',
41
- page ?? 0,
42
- pageSize ?? 20,
43
- orderBy ?? '',
44
- orderDirection ?? ''
45
- ],
46
- queryFn: () => {
47
- const filters: Get${pascal}SubmissionsFilters = {}
48
-
49
- if (search) filters.search = search
50
- if (submittedAtFrom) filters.submittedAtFrom = submittedAtFrom
51
- if (submittedAtTo) filters.submittedAtTo = submittedAtTo
52
- if (pageSize != null && pageSize !== -1) {
53
- filters.limit = pageSize
54
- filters.offset = (page ?? 0) * pageSize
55
- }
56
- if (orderBy) filters.orderBy = orderBy
57
- if (orderDirection) filters.orderDirection = orderDirection
58
-
59
- return get${pascal}Submissions(Object.keys(filters).length > 0 ? filters : undefined)
60
- }
61
- })
62
- }
63
-
64
- export function use${pascal}Submission(id: string | null) {
65
- return useQuery({
66
- queryKey: ['${camel}-submission', id],
67
- queryFn: () => {
68
- if (!id) {
69
- throw new Error('Submission ID is required')
70
- }
71
- return get${pascal}Submission(id)
72
- },
73
- enabled: !!id
74
- })
75
- }
76
-
77
- export function useCreate${pascal}Submission() {
78
- const queryClient = useQueryClient()
79
-
80
- return useMutation({
81
- mutationFn: (data: Create${pascal}SubmissionInput) => create${pascal}Submission(data),
82
- onSuccess: async (result) => {
83
- if (result.success) {
84
- toast.success('${successMsg}')
85
- await queryClient.refetchQueries({ queryKey: ['${camel}-submissions'] })
86
- } else {
87
- toast.error(result.error || 'Failed to submit form')
88
- }
89
- },
90
- onError: (error: Error) => {
91
- toast.error(error.message || 'Failed to submit form')
92
- }
93
- })
94
- }
95
-
96
- export function useDelete${pascal}Submission() {
97
- const queryClient = useQueryClient()
98
-
99
- return useMutation({
100
- mutationFn: (id: string) => delete${pascal}Submission(id),
101
- onSuccess: async () => {
102
- toast.success('Submission deleted successfully')
103
- await queryClient.refetchQueries({ queryKey: ['${camel}-submissions'] })
104
- },
105
- onError: (error: Error) => {
106
- toast.error(error.message || 'Failed to delete submission')
107
- }
108
- })
109
- }
110
- ${hasExportCreateObjectUrl}`
111
- }
112
-
113
- export function renderFormHookGeneratedFunctionDetailsTemplate({
114
- pascal,
115
- formName
116
- }: {
117
- pascal: string
118
- formName: string
119
- }): string {
120
- return `
121
- export function useExport${pascal}SubmissionsCSV() {
122
- return useMutation({
123
- mutationFn: export${pascal}SubmissionsCSV,
124
- onSuccess: (csvContent) => {
125
- const blob = new Blob([csvContent], { type: 'text/csv' })
126
- const url = window.URL.createObjectURL(blob)
127
- const link = document.createElement('a')
128
- link.href = url
129
- link.download = \`${formName}-submissions-\${new Date().toISOString().split('T')[0]}.csv\`
130
- document.body.appendChild(link)
131
- link.click()
132
- document.body.removeChild(link)
133
- window.URL.revokeObjectURL(url)
134
- toast.success('CSV exported successfully')
135
- },
136
- onError: (error: Error) => {
137
- toast.error(error.message || 'Failed to export CSV')
138
- }
139
- })
140
- }
141
- `
142
- }
@@ -1,169 +0,0 @@
1
- export function renderHookContentTemplate(): string {
2
- return ` if (safePageSize !== -1) {
3
- filters.limit = safePageSize
4
- filters.offset = safePage * safePageSize
5
- }
6
- if (orderBy) filters.orderBy = orderBy
7
- if (orderDirection) filters.orderDirection = orderDirection`
8
- }
9
-
10
- export function renderHookFiltersTemplate({
11
- plural,
12
- map,
13
- paginationBlock
14
- }: {
15
- plural: string
16
- map: string
17
- paginationBlock: string
18
- }): string {
19
- return `const filters: ${plural}Query = {}
20
- if (search) filters.search = search
21
- ${map}
22
- ${paginationBlock}
23
- return get${plural}(Object.keys(filters).length > 0 ? filters : undefined)`
24
- }
25
-
26
- export function renderHookContentDetailsTemplate(): string {
27
- return ` if (status === 'published') filters.published = true
28
- if (status === 'draft') filters.published = false`
29
- }
30
-
31
- export function renderHookContentDetailsBranchTemplate({
32
- filterFromVariableName,
33
- filterField,
34
- filterToVariableName
35
- }: {
36
- filterFromVariableName: string
37
- filterField: string
38
- filterToVariableName: string
39
- }): string {
40
- return ` if (${filterFromVariableName}) filters.${filterField}From = ${filterFromVariableName}
41
- if (${filterToVariableName}) filters.${filterField}To = ${filterToVariableName}`
42
- }
43
-
44
- export function renderHookContentDetailsBranchBodyTemplate({
45
- filterVariableName,
46
- filterField
47
- }: {
48
- filterVariableName: string
49
- filterField: string
50
- }): string {
51
- return ` if (${filterVariableName} === 'true') filters.${filterField} = true
52
- if (${filterVariableName} === 'false') filters.${filterField} = false`
53
- }
54
-
55
- export function renderHookFiltersDetailsTemplate({
56
- plural,
57
- paginationBlock
58
- }: {
59
- plural: string
60
- paginationBlock: string
61
- }): string {
62
- return `const filters: ${plural}Query = {}
63
- if (search) filters.search = search
64
- ${paginationBlock}
65
- return get${plural}(Object.keys(filters).length > 0 ? filters : undefined)`
66
- }
67
-
68
- export function renderHookGeneratedFunctionTemplate({
69
- singular,
70
- singularText
71
- }: {
72
- singular: string
73
- singularText: string
74
- }): string {
75
- return `
76
- export function use${singular}(id: string | null | undefined): UseQueryResult<${singular} | null, Error> {
77
- return useQuery({
78
- queryKey: ['${singularText}', id],
79
- queryFn: () => (id ? get${singular}ById(id) : Promise.resolve(null)),
80
- enabled: !!id,
81
- })
82
- }`
83
- }
84
-
85
- export function renderHookGeneratedFunctionDetailsTemplate({
86
- singular,
87
- singularText
88
- }: {
89
- singular: string
90
- singularText: string
91
- }): string {
92
- return `
93
-
94
- export function use${singular}BySlug(slug: string | null | undefined): UseQueryResult<${singular} | null, Error> {
95
- return useQuery({
96
- queryKey: ['${singularText}', 'slug', slug],
97
- queryFn: () => (slug ? get${singular}BySlug(slug) : Promise.resolve(null)),
98
- enabled: !!slug,
99
- })
100
- }`
101
- }
102
-
103
- export function renderHookGeneratedFunctionDetailsBranchTemplate({
104
- plural,
105
- filterPascalName,
106
- pluralText,
107
- filterKey
108
- }: {
109
- plural: string
110
- filterPascalName: string
111
- pluralText: string
112
- filterKey: string
113
- }): string {
114
- return `
115
-
116
- export function use${plural}Distinct${filterPascalName}(): UseQueryResult<string[], Error> {
117
- return useQuery({
118
- queryKey: ['${pluralText}', 'distinct', '${filterKey}'],
119
- queryFn: () => getDistinct${plural}${filterPascalName}()
120
- })
121
- }`
122
- }
123
-
124
- export function renderHookGeneratedFunctionDetailsBranchBodyTemplate({
125
- join,
126
- actionImportPath,
127
- plural,
128
- allParamsContent,
129
- pluralText,
130
- queryKeyParts,
131
- filtersBody,
132
- singularHook,
133
- slugHook,
134
- distinctHooks
135
- }: {
136
- join: string
137
- actionImportPath: string
138
- plural: string
139
- allParamsContent: string
140
- pluralText: string
141
- queryKeyParts: string
142
- filtersBody: string
143
- singularHook: string
144
- slugHook: string
145
- distinctHooks: string
146
- }): string {
147
- return `import {
148
- ${join}
149
- } from '@admin/actions/${actionImportPath}'
150
- import { type UseQueryResult, useQuery } from '@tanstack/react-query'
151
-
152
- export function use${plural}(
153
- ${allParamsContent}
154
- options?: { enabled?: boolean }
155
- ): UseQueryResult<${plural}Page, Error> {
156
- const safePage = Number.isFinite(page ?? 0) && (page ?? 0) > 0 ? (page ?? 0) : 0
157
- const safePageSize = pageSize === -1 || (Number.isFinite(pageSize ?? 20) && (pageSize ?? 20) > 0) ? (pageSize ?? 20) : 20
158
-
159
- return useQuery({
160
- queryKey: ['${pluralText}', ${queryKeyParts}],
161
- queryFn: () => {
162
- ${filtersBody}
163
- },
164
- enabled: options?.enabled ?? true,
165
- })
166
- }
167
- ${singularHook}${slugHook}${distinctHooks}
168
- `
169
- }
@@ -1,30 +0,0 @@
1
- export function renderSingleHookComponentTemplate({
2
- singular,
3
- actionImportPath,
4
- schemaName
5
- }: {
6
- singular: string
7
- actionImportPath: string
8
- schemaName: string
9
- }): string {
10
- return `import {
11
- get${singular},
12
- type ${singular}
13
- } from '@admin/actions/${actionImportPath}'
14
- import { type UseQueryResult, useQuery } from '@tanstack/react-query'
15
-
16
- interface Use${singular}Options {
17
- initialData?: ${singular} | null
18
- }
19
-
20
- export function use${singular}(options: Use${singular}Options = {}): UseQueryResult<${singular} | null, Error> {
21
- return useQuery({
22
- queryKey: ['${schemaName}'],
23
- queryFn: () => get${singular}(),
24
- staleTime: Number.POSITIVE_INFINITY,
25
- gcTime: Number.POSITIVE_INFINITY,
26
- ...(options.initialData !== undefined ? { initialData: options.initialData } : {}),
27
- })
28
- }
29
- `
30
- }
@@ -1,19 +0,0 @@
1
- export function renderBuildNavigationExtractSourceImportsTemplate({
2
- join,
3
- toCamelCase,
4
- joinText
5
- }: {
6
- join: string
7
- toCamelCase: string
8
- joinText: string
9
- }): string {
10
- return `import type { AdminNavigationItem } from '@admin/types/navigation'
11
- import { ${join} } from 'lucide-react'
12
-
13
- export const ${toCamelCase}Nav: AdminNavigationItem[] = [
14
- {
15
- ${joinText}
16
- }
17
- ]
18
- `
19
- }