@objectql/create 1.0.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 (110) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +28 -0
  3. package/dist/bin.js +125 -0
  4. package/package.json +27 -0
  5. package/templates/enterprise/CHANGELOG.md +140 -0
  6. package/templates/enterprise/README.md +352 -0
  7. package/templates/enterprise/__tests__/data-api.test.ts +546 -0
  8. package/templates/enterprise/__tests__/data-api.test.ts.backup +526 -0
  9. package/templates/enterprise/__tests__/metadata-api.test.ts +307 -0
  10. package/templates/enterprise/__tests__/metadata-loading.test.ts +250 -0
  11. package/templates/enterprise/jest.config.js +22 -0
  12. package/templates/enterprise/package.json +51 -0
  13. package/templates/enterprise/src/apps/erp.app.yml +4 -0
  14. package/templates/enterprise/src/core/attachment.object.yml +57 -0
  15. package/templates/enterprise/src/core/i18n/en/core.json +60 -0
  16. package/templates/enterprise/src/core/i18n/zh-CN/core.json +60 -0
  17. package/templates/enterprise/src/core/index.ts +24 -0
  18. package/templates/enterprise/src/core/organization.object.yml +78 -0
  19. package/templates/enterprise/src/core/user.object.yml +80 -0
  20. package/templates/enterprise/src/extensions/README.md +56 -0
  21. package/templates/enterprise/src/extensions/user.extension.object.yml +42 -0
  22. package/templates/enterprise/src/extensions/user.ts +26 -0
  23. package/templates/enterprise/src/index.ts +47 -0
  24. package/templates/enterprise/src/modules/crm/README.md +99 -0
  25. package/templates/enterprise/src/modules/crm/crm_account.object.yml +105 -0
  26. package/templates/enterprise/src/modules/crm/crm_contact.object.yml +103 -0
  27. package/templates/enterprise/src/modules/crm/crm_lead.object.yml +148 -0
  28. package/templates/enterprise/src/modules/crm/crm_opportunity.object.yml +128 -0
  29. package/templates/enterprise/src/modules/crm/i18n/en/crm.json +61 -0
  30. package/templates/enterprise/src/modules/crm/i18n/zh-CN/crm.json +61 -0
  31. package/templates/enterprise/src/modules/crm/index.ts +29 -0
  32. package/templates/enterprise/src/modules/finance/README.md +112 -0
  33. package/templates/enterprise/src/modules/finance/finance_budget.object.yml +108 -0
  34. package/templates/enterprise/src/modules/finance/finance_expense.object.yml +151 -0
  35. package/templates/enterprise/src/modules/finance/finance_invoice.object.yml +143 -0
  36. package/templates/enterprise/src/modules/finance/finance_payment.object.yml +96 -0
  37. package/templates/enterprise/src/modules/finance/index.ts +26 -0
  38. package/templates/enterprise/src/modules/hr/README.md +95 -0
  39. package/templates/enterprise/src/modules/hr/hr_department.object.yml +59 -0
  40. package/templates/enterprise/src/modules/hr/hr_employee.object.yml +137 -0
  41. package/templates/enterprise/src/modules/hr/hr_position.object.yml +79 -0
  42. package/templates/enterprise/src/modules/hr/hr_timesheet.object.yml +114 -0
  43. package/templates/enterprise/src/modules/hr/index.ts +26 -0
  44. package/templates/enterprise/src/modules/project/README.md +132 -0
  45. package/templates/enterprise/src/modules/project/index.ts +26 -0
  46. package/templates/enterprise/src/modules/project/project_milestone.object.yml +70 -0
  47. package/templates/enterprise/src/modules/project/project_project.object.yml +135 -0
  48. package/templates/enterprise/src/modules/project/project_task.object.yml +121 -0
  49. package/templates/enterprise/src/modules/project/project_timesheet_entry.object.yml +95 -0
  50. package/templates/enterprise/src/plugins/audit/audit.plugin.ts +23 -0
  51. package/templates/enterprise/src/plugins/audit/index.ts +6 -0
  52. package/templates/enterprise/src/plugins/audit/note.object.yml +3 -0
  53. package/templates/enterprise/src/shared/constants.ts +30 -0
  54. package/templates/enterprise/src/shared/utils.ts +54 -0
  55. package/templates/enterprise/src/shared/validators.ts +47 -0
  56. package/templates/enterprise/src/types/attachment.ts +41 -0
  57. package/templates/enterprise/src/types/crm_account.ts +61 -0
  58. package/templates/enterprise/src/types/crm_contact.ts +61 -0
  59. package/templates/enterprise/src/types/crm_lead.ts +77 -0
  60. package/templates/enterprise/src/types/crm_opportunity.ts +53 -0
  61. package/templates/enterprise/src/types/finance_budget.ts +61 -0
  62. package/templates/enterprise/src/types/finance_expense.ts +65 -0
  63. package/templates/enterprise/src/types/finance_invoice.ts +69 -0
  64. package/templates/enterprise/src/types/finance_payment.ts +49 -0
  65. package/templates/enterprise/src/types/hr_department.ts +37 -0
  66. package/templates/enterprise/src/types/hr_employee.ts +85 -0
  67. package/templates/enterprise/src/types/hr_position.ts +49 -0
  68. package/templates/enterprise/src/types/hr_timesheet.ts +57 -0
  69. package/templates/enterprise/src/types/index.ts +20 -0
  70. package/templates/enterprise/src/types/note.ts +9 -0
  71. package/templates/enterprise/src/types/organization.ts +53 -0
  72. package/templates/enterprise/src/types/project_milestone.ts +41 -0
  73. package/templates/enterprise/src/types/project_project.ts +69 -0
  74. package/templates/enterprise/src/types/project_task.ts +57 -0
  75. package/templates/enterprise/src/types/project_timesheet_entry.ts +45 -0
  76. package/templates/enterprise/src/types/user.ts +65 -0
  77. package/templates/enterprise/tsconfig.json +10 -0
  78. package/templates/enterprise/tsconfig.tsbuildinfo +1 -0
  79. package/templates/hello-world/CHANGELOG.md +33 -0
  80. package/templates/hello-world/README.md +29 -0
  81. package/templates/hello-world/package.json +24 -0
  82. package/templates/hello-world/src/index.ts +58 -0
  83. package/templates/hello-world/tsconfig.json +10 -0
  84. package/templates/starter/CHANGELOG.md +191 -0
  85. package/templates/starter/README.md +17 -0
  86. package/templates/starter/__tests__/projects-hooks-actions.test.ts +490 -0
  87. package/templates/starter/jest.config.js +22 -0
  88. package/templates/starter/package.json +51 -0
  89. package/templates/starter/src/README.pages.md +110 -0
  90. package/templates/starter/src/demo.app.yml +4 -0
  91. package/templates/starter/src/i18n/zh-CN/projects.json +22 -0
  92. package/templates/starter/src/index.ts +55 -0
  93. package/templates/starter/src/modules/kitchen-sink/kitchen_sink.data.yml +18 -0
  94. package/templates/starter/src/modules/kitchen-sink/kitchen_sink.object.yml +156 -0
  95. package/templates/starter/src/modules/projects/project_approval.workflow.yml +51 -0
  96. package/templates/starter/src/modules/projects/projects.action.ts +472 -0
  97. package/templates/starter/src/modules/projects/projects.data.yml +13 -0
  98. package/templates/starter/src/modules/projects/projects.hook.ts +339 -0
  99. package/templates/starter/src/modules/projects/projects.object.yml +148 -0
  100. package/templates/starter/src/modules/projects/projects.permission.yml +141 -0
  101. package/templates/starter/src/modules/projects/projects.validation.yml +37 -0
  102. package/templates/starter/src/modules/tasks/tasks.data.yml +23 -0
  103. package/templates/starter/src/modules/tasks/tasks.object.yml +34 -0
  104. package/templates/starter/src/modules/tasks/tasks.permission.yml +167 -0
  105. package/templates/starter/src/types/index.ts +3 -0
  106. package/templates/starter/src/types/kitchen_sink.ts +101 -0
  107. package/templates/starter/src/types/projects.ts +49 -0
  108. package/templates/starter/src/types/tasks.ts +33 -0
  109. package/templates/starter/tsconfig.json +11 -0
  110. package/templates/starter/tsconfig.tsbuildinfo +1 -0
@@ -0,0 +1,22 @@
1
+ {
2
+ "label": "项目",
3
+ "fields": {
4
+ "name": { "label": "项目名称" },
5
+ "status": {
6
+ "label": "状态",
7
+ "options": {
8
+ "planned": "计划中",
9
+ "in_progress": "进行中",
10
+ "completed": "已完成"
11
+ }
12
+ },
13
+ "description": { "label": "描述" },
14
+ "owner": { "label": "负责人" }
15
+ },
16
+ "actions": {
17
+ "complete": {
18
+ "label": "完成项目",
19
+ "confirm_text": "确认将项目标记为完成吗?"
20
+ }
21
+ }
22
+ }
@@ -0,0 +1,55 @@
1
+ import { ObjectQL } from '@objectql/core';
2
+ import { SqlDriver } from '@objectql/driver-sql';
3
+ import { ObjectLoader } from '@objectql/platform-node';
4
+ import * as path from 'path';
5
+
6
+ async function main() {
7
+ console.log("🚀 Starting Project Tracker Showcase...");
8
+
9
+ const app = new ObjectQL({
10
+ datasources: {
11
+ default: new SqlDriver({
12
+ client: 'sqlite3',
13
+ connection: { filename: ':memory:' },
14
+ useNullAsDefault: true
15
+ })
16
+ }
17
+ });
18
+
19
+ const loader = new ObjectLoader(app.metadata);
20
+ await loader.load(path.join(__dirname));
21
+
22
+ await app.init();
23
+ console.log("✅ Schema loaded from filesystem");
24
+
25
+ const ctx = app.createContext({ isSystem: true });
26
+
27
+ console.log("Creating Project...");
28
+ const project = await ctx.object('projects').create({
29
+ name: 'Website Redesign',
30
+ status: 'planning',
31
+ start_date: new Date()
32
+ });
33
+
34
+ console.log("Creating Task...");
35
+ const projectId = project._id || project.id;
36
+
37
+ await ctx.object('tasks').create({
38
+ name: 'Design Mockups',
39
+ project: projectId,
40
+ completed: false
41
+ });
42
+
43
+ console.log("Querying Tasks...");
44
+ const tasks = await ctx.object('tasks').find({
45
+ filters: [['project', '=', projectId]]
46
+ });
47
+
48
+ console.log("📊 Project Report:", JSON.stringify({ project, tasks }, null, 2));
49
+ }
50
+
51
+ if (require.main === module) {
52
+ main().catch(console.error);
53
+ }
54
+
55
+ export * from './types';
@@ -0,0 +1,18 @@
1
+ - simple_text: "Hello World"
2
+ long_text: |
3
+ This is a long text.
4
+ It spans multiple lines.
5
+ rich_content: "# Markdown Header\n\n- List Item 1\n- List Item 2"
6
+ count: 42
7
+ price: 99.99
8
+ progress: 0.75
9
+ is_active: true
10
+ due_date: "2024-12-31"
11
+ meeting_time: "2024-12-31T10:00:00Z"
12
+ status: "published"
13
+ tags: ["tech", "blog"]
14
+ email_address: "test@example.com"
15
+ website: "https://objectql.org"
16
+ metadata:
17
+ source: "seed_data"
18
+ version: 1
@@ -0,0 +1,156 @@
1
+ label: "Kitchen Sink (All Fields)"
2
+ description: "A demonstration of every supported field type in ObjectQL"
3
+ icon: "layout-grid-line"
4
+
5
+ fields:
6
+ # --- String Types ---
7
+ simple_text:
8
+ type: text
9
+ label: Simple Text
10
+ required: true
11
+ min_length: 3
12
+ max_length: 100
13
+ help_text: "Basic single-line text"
14
+
15
+ long_text:
16
+ type: textarea
17
+ label: Multi-line Text
18
+ rows: 4
19
+
20
+ rich_content:
21
+ type: markdown
22
+ label: Markdown Content
23
+
24
+ raw_html:
25
+ type: html
26
+ label: HTML Content
27
+ readonly: true # Usually HTML is generated or read-only
28
+
29
+ # --- Number Types ---
30
+ count:
31
+ type: number
32
+ label: Integer Count
33
+ scale: 0
34
+
35
+ price:
36
+ type: currency
37
+ label: Price
38
+ currency: USD
39
+ scale: 2
40
+
41
+ progress:
42
+ type: percent
43
+ label: Progress
44
+ min: 0
45
+ max: 1
46
+ scale: 2 # 0.55 -> 55%
47
+
48
+ # --- Boolean ---
49
+ is_active:
50
+ type: boolean
51
+ label: Is Active
52
+ defaultValue: true
53
+
54
+ # --- Date & Time ---
55
+ due_date:
56
+ type: date
57
+ label: Due Date
58
+
59
+ meeting_time:
60
+ type: datetime
61
+ label: Meeting (Date & Time)
62
+
63
+ alarm:
64
+ type: time
65
+ label: Alarm Time
66
+
67
+ # --- Selection ---
68
+ status:
69
+ type: select
70
+ label: Status
71
+ options:
72
+ - label: Draft
73
+ value: draft
74
+ - label: Published
75
+ value: published
76
+ - label: Archived
77
+ value: archived
78
+ defaultValue: draft
79
+
80
+ tags:
81
+ type: select
82
+ label: Tags
83
+ multiple: true
84
+ options:
85
+ - tech
86
+ - news
87
+ - blog # Simple string array shorthand
88
+
89
+ # --- Contact & Web ---
90
+ email_address:
91
+ type: email
92
+ label: Email
93
+
94
+ phone_number:
95
+ type: phone
96
+ label: Phone
97
+
98
+ website:
99
+ type: url
100
+ label: Website URL
101
+
102
+ # --- Media ---
103
+ profile_pic:
104
+ type: image
105
+ label: Avatar
106
+ multiple: false
107
+ max_size: 1048576 # 1MB
108
+
109
+ attachment:
110
+ type: file
111
+ label: Attachment document
112
+
113
+ gallery:
114
+ type: image
115
+ label: Image Gallery
116
+ multiple: true
117
+
118
+ # --- Security ---
119
+ secret_code:
120
+ type: password
121
+ label: Secret Code
122
+
123
+ # --- Advanced / Complex ---
124
+ coords:
125
+ type: location
126
+ label: GPS Coordinates
127
+
128
+ metadata:
129
+ type: object
130
+ label: JSON Metadata
131
+
132
+ embedding:
133
+ type: vector
134
+ label: Vector Embedding
135
+ dimension: 1536 # e.g. OpenAI ada-002
136
+
137
+ # --- Relationships ---
138
+ related_project:
139
+ type: lookup
140
+ label: Related Project
141
+ reference_to: projects
142
+
143
+ # Note: master_detail requires this object to be the detail side
144
+ # parent_project:
145
+ # type: master_detail
146
+ # reference_to: projects
147
+
148
+ # --- Computed ---
149
+ # auto_id:
150
+ # type: auto_number
151
+ # prefix: "KS-"
152
+
153
+ # calc_value:
154
+ # type: formula
155
+ # expression: "{count} * 10"
156
+
@@ -0,0 +1,51 @@
1
+ name: project_approval
2
+ label: "High Budget Project Approval"
3
+ type: approval
4
+ object: projects
5
+ description: "Approval process for high budget projects (> $50,000)"
6
+
7
+ trigger:
8
+ event: create_or_update
9
+ conditions:
10
+ - field: budget
11
+ operator: ">"
12
+ value: 50000
13
+ - field: status
14
+ operator: "="
15
+ value: "planned"
16
+
17
+ steps:
18
+ - name: manager_review
19
+ label: "Manager Review"
20
+ type: approval
21
+
22
+ assignee:
23
+ type: role
24
+ role: manager
25
+
26
+ actions:
27
+ approve:
28
+ label: "Approve"
29
+ next_step: finance_review
30
+ reject:
31
+ label: "Reject"
32
+ outcome: rejected
33
+
34
+ - name: finance_review
35
+ label: "Finance Review"
36
+ type: approval
37
+
38
+ assignee:
39
+ type: role
40
+ role: finance_admin
41
+
42
+ actions:
43
+ approve:
44
+ label: "Approve Funding"
45
+ outcome: approved
46
+ updates:
47
+ status: "in_progress"
48
+ approved_at: "$now"
49
+ reject:
50
+ label: "Reject Funding"
51
+ outcome: rejected