@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.
- package/LICENSE +21 -0
- package/README.md +28 -0
- package/dist/bin.js +125 -0
- package/package.json +27 -0
- package/templates/enterprise/CHANGELOG.md +140 -0
- package/templates/enterprise/README.md +352 -0
- package/templates/enterprise/__tests__/data-api.test.ts +546 -0
- package/templates/enterprise/__tests__/data-api.test.ts.backup +526 -0
- package/templates/enterprise/__tests__/metadata-api.test.ts +307 -0
- package/templates/enterprise/__tests__/metadata-loading.test.ts +250 -0
- package/templates/enterprise/jest.config.js +22 -0
- package/templates/enterprise/package.json +51 -0
- package/templates/enterprise/src/apps/erp.app.yml +4 -0
- package/templates/enterprise/src/core/attachment.object.yml +57 -0
- package/templates/enterprise/src/core/i18n/en/core.json +60 -0
- package/templates/enterprise/src/core/i18n/zh-CN/core.json +60 -0
- package/templates/enterprise/src/core/index.ts +24 -0
- package/templates/enterprise/src/core/organization.object.yml +78 -0
- package/templates/enterprise/src/core/user.object.yml +80 -0
- package/templates/enterprise/src/extensions/README.md +56 -0
- package/templates/enterprise/src/extensions/user.extension.object.yml +42 -0
- package/templates/enterprise/src/extensions/user.ts +26 -0
- package/templates/enterprise/src/index.ts +47 -0
- package/templates/enterprise/src/modules/crm/README.md +99 -0
- package/templates/enterprise/src/modules/crm/crm_account.object.yml +105 -0
- package/templates/enterprise/src/modules/crm/crm_contact.object.yml +103 -0
- package/templates/enterprise/src/modules/crm/crm_lead.object.yml +148 -0
- package/templates/enterprise/src/modules/crm/crm_opportunity.object.yml +128 -0
- package/templates/enterprise/src/modules/crm/i18n/en/crm.json +61 -0
- package/templates/enterprise/src/modules/crm/i18n/zh-CN/crm.json +61 -0
- package/templates/enterprise/src/modules/crm/index.ts +29 -0
- package/templates/enterprise/src/modules/finance/README.md +112 -0
- package/templates/enterprise/src/modules/finance/finance_budget.object.yml +108 -0
- package/templates/enterprise/src/modules/finance/finance_expense.object.yml +151 -0
- package/templates/enterprise/src/modules/finance/finance_invoice.object.yml +143 -0
- package/templates/enterprise/src/modules/finance/finance_payment.object.yml +96 -0
- package/templates/enterprise/src/modules/finance/index.ts +26 -0
- package/templates/enterprise/src/modules/hr/README.md +95 -0
- package/templates/enterprise/src/modules/hr/hr_department.object.yml +59 -0
- package/templates/enterprise/src/modules/hr/hr_employee.object.yml +137 -0
- package/templates/enterprise/src/modules/hr/hr_position.object.yml +79 -0
- package/templates/enterprise/src/modules/hr/hr_timesheet.object.yml +114 -0
- package/templates/enterprise/src/modules/hr/index.ts +26 -0
- package/templates/enterprise/src/modules/project/README.md +132 -0
- package/templates/enterprise/src/modules/project/index.ts +26 -0
- package/templates/enterprise/src/modules/project/project_milestone.object.yml +70 -0
- package/templates/enterprise/src/modules/project/project_project.object.yml +135 -0
- package/templates/enterprise/src/modules/project/project_task.object.yml +121 -0
- package/templates/enterprise/src/modules/project/project_timesheet_entry.object.yml +95 -0
- package/templates/enterprise/src/plugins/audit/audit.plugin.ts +23 -0
- package/templates/enterprise/src/plugins/audit/index.ts +6 -0
- package/templates/enterprise/src/plugins/audit/note.object.yml +3 -0
- package/templates/enterprise/src/shared/constants.ts +30 -0
- package/templates/enterprise/src/shared/utils.ts +54 -0
- package/templates/enterprise/src/shared/validators.ts +47 -0
- package/templates/enterprise/src/types/attachment.ts +41 -0
- package/templates/enterprise/src/types/crm_account.ts +61 -0
- package/templates/enterprise/src/types/crm_contact.ts +61 -0
- package/templates/enterprise/src/types/crm_lead.ts +77 -0
- package/templates/enterprise/src/types/crm_opportunity.ts +53 -0
- package/templates/enterprise/src/types/finance_budget.ts +61 -0
- package/templates/enterprise/src/types/finance_expense.ts +65 -0
- package/templates/enterprise/src/types/finance_invoice.ts +69 -0
- package/templates/enterprise/src/types/finance_payment.ts +49 -0
- package/templates/enterprise/src/types/hr_department.ts +37 -0
- package/templates/enterprise/src/types/hr_employee.ts +85 -0
- package/templates/enterprise/src/types/hr_position.ts +49 -0
- package/templates/enterprise/src/types/hr_timesheet.ts +57 -0
- package/templates/enterprise/src/types/index.ts +20 -0
- package/templates/enterprise/src/types/note.ts +9 -0
- package/templates/enterprise/src/types/organization.ts +53 -0
- package/templates/enterprise/src/types/project_milestone.ts +41 -0
- package/templates/enterprise/src/types/project_project.ts +69 -0
- package/templates/enterprise/src/types/project_task.ts +57 -0
- package/templates/enterprise/src/types/project_timesheet_entry.ts +45 -0
- package/templates/enterprise/src/types/user.ts +65 -0
- package/templates/enterprise/tsconfig.json +10 -0
- package/templates/enterprise/tsconfig.tsbuildinfo +1 -0
- package/templates/hello-world/CHANGELOG.md +33 -0
- package/templates/hello-world/README.md +29 -0
- package/templates/hello-world/package.json +24 -0
- package/templates/hello-world/src/index.ts +58 -0
- package/templates/hello-world/tsconfig.json +10 -0
- package/templates/starter/CHANGELOG.md +191 -0
- package/templates/starter/README.md +17 -0
- package/templates/starter/__tests__/projects-hooks-actions.test.ts +490 -0
- package/templates/starter/jest.config.js +22 -0
- package/templates/starter/package.json +51 -0
- package/templates/starter/src/README.pages.md +110 -0
- package/templates/starter/src/demo.app.yml +4 -0
- package/templates/starter/src/i18n/zh-CN/projects.json +22 -0
- package/templates/starter/src/index.ts +55 -0
- package/templates/starter/src/modules/kitchen-sink/kitchen_sink.data.yml +18 -0
- package/templates/starter/src/modules/kitchen-sink/kitchen_sink.object.yml +156 -0
- package/templates/starter/src/modules/projects/project_approval.workflow.yml +51 -0
- package/templates/starter/src/modules/projects/projects.action.ts +472 -0
- package/templates/starter/src/modules/projects/projects.data.yml +13 -0
- package/templates/starter/src/modules/projects/projects.hook.ts +339 -0
- package/templates/starter/src/modules/projects/projects.object.yml +148 -0
- package/templates/starter/src/modules/projects/projects.permission.yml +141 -0
- package/templates/starter/src/modules/projects/projects.validation.yml +37 -0
- package/templates/starter/src/modules/tasks/tasks.data.yml +23 -0
- package/templates/starter/src/modules/tasks/tasks.object.yml +34 -0
- package/templates/starter/src/modules/tasks/tasks.permission.yml +167 -0
- package/templates/starter/src/types/index.ts +3 -0
- package/templates/starter/src/types/kitchen_sink.ts +101 -0
- package/templates/starter/src/types/projects.ts +49 -0
- package/templates/starter/src/types/tasks.ts +33 -0
- package/templates/starter/tsconfig.json +11 -0
- 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
|