Skip to content

Commit 3cd7c1e

Browse files
committed
feat: xeml, data, jacaranda, tester
1 parent 64cbf99 commit 3cd7c1e

File tree

32 files changed

+503
-215
lines changed

32 files changed

+503
-215
lines changed

apps/xeml/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# @kitmi/xeml
22

3+
## 0.10.1
4+
5+
### Minor Changes
6+
7+
- Removed version info requirement while generating api
8+
39
## 0.10.0
410

511
### Minor Changes

apps/xeml/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@kitmi/xeml",
3-
"version": "0.10.0",
3+
"version": "0.10.1",
44
"description": "Jacaranda data entity modeling tool",
55
"main": "src/index.js",
66
"bin": {

apps/xeml/src/cli/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ function main() {
7070
commandLine: {
7171
banner: () => {
7272
return (
73-
figlet.textSync('XGent . ai', {
73+
figlet.textSync('XGENT . ai', {
7474
horizontalLayout: 'fitted',
7575
}) +
7676
'\n' +

apps/xeml/src/commands/build-api.js

Lines changed: 3 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
const path = require('node:path');
2-
const { fs, cmd } = require('@kitmi/sys');
2+
const { cmd } = require('@kitmi/sys');
33
const { _, eachAsync_, isEmpty, sleep_ } = require('@kitmi/utils');
44
const { InvalidArgument } = require('@kitmi/types');
55
const Linker = require('../lang/Linker');
6-
const { getVersionInfo, getSchemaDigest, writeVersionInfo } = require('../utils/helpers');
76

87
/**
98
* Build database scripts and entity models from oolong files.
@@ -17,8 +16,6 @@ module.exports = async (app) => {
1716

1817
const schemaObjects = Linker.buildSchemaObjects(app, modelService.config);
1918

20-
const duplicateEntities = new Set();
21-
2219
await eachAsync_(modelService.config.schemaSet, async (schemaConfig, schemaName) => {
2320
app.log('verbose', `Processing schema "${schemaName}" ...`);
2421

@@ -36,30 +33,16 @@ module.exports = async (app) => {
3633

3734
const DbModeler = require(`../modeler/database/${connector.driver}/Modeler`);
3835
const dbModeler = new DbModeler(modelService, schema.linker, connector, schemaConfig.options);
39-
const refinedSchema = await dbModeler.modeling_(schema, true, duplicateEntities);
40-
Object.keys(refinedSchema.entities).forEach((entityName) => duplicateEntities.add(entityName));
41-
42-
const schemaJSON = refinedSchema.toJSON();
36+
const refinedSchema = await dbModeler.modeling_(schema, true);
4337

4438
if (!isEmpty(dbModeler.warnings)) {
4539
Object.values(dbModeler.warnings).forEach((warning) => app.log('warn', warning));
4640
}
4741

48-
const digest = getSchemaDigest(schemaJSON);
49-
const verContent = getVersionInfo(modelService, schemaName);
50-
51-
if (!verContent.digest || verContent.digest !== digest) {
52-
verContent.digest = digest;
53-
verContent.version = verContent.version + 1;
54-
writeVersionInfo(modelService, schemaName, verContent);
55-
56-
app.log('info', `Schema "${schemaName}" updated to version ${verContent.version}.`);
57-
}
58-
5942
const DaoModeler = require('../modeler/Dao');
6043
let daoModeler = new DaoModeler(modelService, schema.linker, connector);
6144

62-
return daoModeler.generateApi(refinedSchema, verContent);
45+
return daoModeler.generateApi(refinedSchema);
6346
});
6447

6548
app.logger.flush();

apps/xeml/src/modeler/Dao.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -839,7 +839,7 @@ class DaoModeler {
839839
});
840840
}
841841

842-
generateApi(schema, versionInfo) {
842+
generateApi(schema) {
843843
const schemaPath = path.join(path.dirname(schema.linker.getModulePathById(schema.xemlModule.id)), 'api');
844844

845845
// check if api folder exists and read all yaml files under api folder
@@ -852,7 +852,6 @@ class DaoModeler {
852852

853853
const context = {
854854
schema,
855-
versionInfo,
856855
sharedTypes: {},
857856
};
858857

@@ -941,7 +940,6 @@ class DaoModeler {
941940
}
942941

943942
const locals = {
944-
schemaVersion: context.versionInfo.version,
945943
baseEndpoint,
946944
className: resourceClassName,
947945
resourceName,

apps/xeml/src/modeler/dao/Api.js.swig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// v.{{ schemaVersion }} by xeml
1+
// auto-generated by xeml
22
import { Controller } from '@kitmi/jacaranda';
33
import { _ } from '@kitmi/utils';
44
import typeSystem, { Types } from '@kitmi/validators/allSync';

apps/xeml/src/modeler/dao/methods.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -430,7 +430,7 @@ const removeExpiredJobs = () => {
430430
batchId: { $neq: '*' },
431431
dispatchedAt: { $lte: expired },
432432
lockerId: { $exists: false },
433-
},
433+
},
434434
$getDeleted: true,
435435
});
436436
}
@@ -456,7 +456,7 @@ const getDueJobs = () => {
456456
$where: {
457457
batchId: '*',
458458
dueAt: { $lte: now },
459-
},
459+
},
460460
$getUpdated: true,
461461
}
462462
);

packages/data/.oxlintrc.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@
2121
"encodeURIComponent": "readonly",
2222
"isNaN": "readonly",
2323
"Number": "readonly",
24-
"parseInt": "readonly"
24+
"parseInt": "readonly",
25+
"clearTimeout": "readonly"
2526
},
2627
"rules": {
2728
"no-undef": "warn"

packages/data/CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,15 @@
11
# @kitmi/data
22

3+
## 0.10.0
4+
5+
### Minor Changes
6+
7+
- Refined rabbitmq driver
8+
- Added $case setValue operator
9+
- Added $limit support for updating many records
10+
- Added retry_ for DbModel class
11+
- Added spinCreate_ for EntityModel class
12+
313
## 0.9.0
414

515
### Minor Changes

packages/data/docs/how-to.md

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,3 +68,26 @@ const ret = await Video.findMany_({
6868
});
6969
// SELECT COUNT(H."id") FROM "video" A LEFT JOIN "document" B ON A."rootDoc" = B."id" LEFT JOIN "documentKnowledge" C ON B."id" = C."document" LEFT JOIN "knowledgeChip" D ON C."knowledge" = D."id" LEFT JOIN "documentKnowledge" E ON D."id" = E."knowledge" LEFT JOIN "document" F ON E."document" = F."id" LEFT JOIN "documentTagging" G ON B."id" = G."entity" LEFT JOIN "tag" H ON G."tag" = H."id" INNER JOIN "course" course ON A."rootDoc" = F."id" LEFT JOIN "branchCourse" I ON course."id" = I."course" LEFT JOIN "subjectBranch" J ON I."branch" = J."id" LEFT JOIN "subject" K ON J."subject" = K."id" WHERE H."id" = ANY ($1) AND K."id" = ANY ($2) AND J."id" = ANY ($3) AND course."id" = ANY ($4) AND A."isDeleted" <> $5 GROUP BY H."id"
7070
```
71+
72+
## UPDATE ... SET xxx = CASE WHEN EXISTS ... END
73+
74+
```js
75+
const { affectedRows } = await UuidSequence.updateOne_(
76+
{
77+
status: {
78+
$case: {
79+
$when: { $expr: { $exist: xrDataSet(entity, { $select: [1], $where: { [field]: uuid } }) } },
80+
$then: 'used',
81+
$else: 'new',
82+
},
83+
},
84+
},
85+
{
86+
$where: {
87+
uuid,
88+
status: 'fetched',
89+
},
90+
}
91+
);
92+
// UPDATE "uuidSequence" SET "status" = CASE WHEN (EXISTS (SELECT 1 FROM "address" WHERE "ref" = $1 AND "isDeleted" <> $2)) THEN $3::uuidSequenceStatus ELSE $4::uuidSequenceStatus END WHERE "uuid" = $5 AND "status" = $6
93+
```

0 commit comments

Comments
 (0)