Commit 9e28dd4b authored by nanahira's avatar nanahira

migrate

parent de3f5c8f
Pipeline #11817 failed with stages
in 1 minute and 15 seconds
This diff is collapsed.
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
"testEnvironment": "node" "testEnvironment": "node"
}, },
"devDependencies": { "devDependencies": {
"@koishijs/plugin-database-memory": "^1.1.0", "@koishijs/plugin-database-memory": "^1.2.0",
"@types/jest": "^27.4.1", "@types/jest": "^27.4.1",
"@types/lodash": "^4.14.180", "@types/lodash": "^4.14.180",
"@types/node": "^17.0.23", "@types/node": "^17.0.23",
...@@ -55,7 +55,7 @@ ...@@ -55,7 +55,7 @@
"typescript": "^4.6.3" "typescript": "^4.6.3"
}, },
"peerDependencies": { "peerDependencies": {
"koishi": "^4.5.1" "koishi": "^4.6.0"
}, },
"dependencies": { "dependencies": {
"lodash": "^4.17.21", "lodash": "^4.17.21",
......
import { Context, Dict, Flatten, Keys, Model, Tables } from 'koishi'; import { Context, Field, Flatten, Keys, Model, Tables } from 'koishi';
import { ModelClassType } from './def'; import { ModelClassType } from './def';
import { reflector } from './meta/meta'; import { reflector } from './meta/meta';
import _ from 'lodash'; import _ from 'lodash';
...@@ -10,9 +10,9 @@ class ModelRegistrar<T = any> { ...@@ -10,9 +10,9 @@ class ModelRegistrar<T = any> {
return reflector.get('ModelTableName', this.cls); return reflector.get('ModelTableName', this.cls);
} }
getFields(): Model.Field.Extension<T> { getFields(): Field.Extension<T> {
const keys = reflector.getArray('ModelFieldKeys', this.cls); const keys = reflector.getArray('ModelFieldKeys', this.cls);
const result: Model.Field.Extension<T> = {}; const result: Field.Extension<T> = {};
for (const key of keys) { for (const key of keys) {
const field = reflector.get('ModelField', this.cls, key); const field = reflector.get('ModelField', this.cls, key);
if (field) { if (field) {
...@@ -22,9 +22,9 @@ class ModelRegistrar<T = any> { ...@@ -22,9 +22,9 @@ class ModelRegistrar<T = any> {
return result; return result;
} }
getExtensions(): Model.Extension<T> { getExtensions(): Model.Config<T> {
const keys = reflector.getArray('ModelFieldKeys', this.cls); const keys = reflector.getArray('ModelFieldKeys', this.cls);
const result: Model.Extension<T> = {}; const result: Model.Config<T> = {};
const primaryKeys: string[] = []; const primaryKeys: string[] = [];
const uniqueMap = new Map<number | string, string[]>(); const uniqueMap = new Map<number | string, string[]>();
for (const key of keys) { for (const key of keys) {
...@@ -67,16 +67,16 @@ class ModelRegistrar<T = any> { ...@@ -67,16 +67,16 @@ class ModelRegistrar<T = any> {
return result; return result;
} }
private mergeFields(fieldDefs: Model.Field.Extension[]) { private mergeFields(fieldDefs: Field.Extension[]) {
let result: Model.Field.Extension<T> = {}; let result: Field.Extension<T> = {};
for (const fieldDef of fieldDefs) { for (const fieldDef of fieldDefs) {
result = { ...result, ...fieldDef }; result = { ...result, ...fieldDef };
} }
return result; return result;
} }
private mergeExtensions(extDefs: Model.Extension<T>[]) { private mergeExtensions(extDefs: Model.Config<T>[]) {
const result: Model.Extension<T> = { const result: Model.Config<T> = {
autoInc: extDefs.some((ext) => ext.autoInc), autoInc: extDefs.some((ext) => ext.autoInc),
}; };
for (const extDef of extDefs) { for (const extDef of extDefs) {
...@@ -131,7 +131,7 @@ class ModelRegistrar<T = any> { ...@@ -131,7 +131,7 @@ class ModelRegistrar<T = any> {
private getChildModelResults() { private getChildModelResults() {
const children = this.getChildDict(); const children = this.getChildDict();
const results: [Model.Field.Extension, Model.Extension][] = []; const results: [Field.Extension, Model.Config][] = [];
for (const key of Object.keys(children)) { for (const key of Object.keys(children)) {
const child = children[key]; const child = children[key];
if (child) { if (child) {
...@@ -148,7 +148,7 @@ class ModelRegistrar<T = any> { ...@@ -148,7 +148,7 @@ class ModelRegistrar<T = any> {
}; };
} }
getModelResult(): [Model.Field.Extension<T>, Model.Extension<T>] { getModelResult(): [Field.Extension<T>, Model.Config<T>] {
const fields = this.getFields(); const fields = this.getFields();
const extensions = this.getExtensions(); const extensions = this.getExtensions();
const childResults = this.getChildModelResults(); const childResults = this.getChildModelResults();
...@@ -169,7 +169,7 @@ export function registerModel( ...@@ -169,7 +169,7 @@ export function registerModel(
throw new Error(`Model of ${cls.name} is not defined`); throw new Error(`Model of ${cls.name} is not defined`);
} }
ctx.model.extend(tableName, ...registrar.getModelResult()); ctx.model.extend(tableName, ...registrar.getModelResult());
Object.assign(ctx.model.config[tableName].internal, registrar.getInternal()); Object.assign(ctx.model.tables[tableName].internal, registrar.getInternal());
} }
export function mixinModel<K extends Keys<Tables>>( export function mixinModel<K extends Keys<Tables>>(
...@@ -186,7 +186,7 @@ export function mixinModel<K extends Keys<Tables>>( ...@@ -186,7 +186,7 @@ export function mixinModel<K extends Keys<Tables>>(
const result = registrar.getModelResult(); const result = registrar.getModelResult();
ctx.model.extend(tableName, ...result); ctx.model.extend(tableName, ...result);
Object.assign( Object.assign(
ctx.model.config[tableName].internal, ctx.model.tables[tableName].internal,
registrar.getInternal(), registrar.getInternal(),
); );
} }
......
...@@ -8,7 +8,7 @@ import { ...@@ -8,7 +8,7 @@ import {
} from '../src/decorators'; } from '../src/decorators';
import { App } from 'koishi'; import { App } from 'koishi';
import { registerModel } from '../src/register'; import { registerModel } from '../src/register';
import MemoryDatabase from '@koishijs/plugin-database-memory'; import * as MemoryDatabase from '@koishijs/plugin-database-memory';
declare module 'koishi' { declare module 'koishi' {
// eslint-disable-next-line @typescript-eslint/no-empty-interface // eslint-disable-next-line @typescript-eslint/no-empty-interface
...@@ -61,7 +61,7 @@ describe('Model test', () => { ...@@ -61,7 +61,7 @@ describe('Model test', () => {
}); });
it('should register model fields', () => { it('should register model fields', () => {
const { dress } = app.model.config; const { dress } = app.model.tables;
expect(dress.fields.id.type).toBe('integer'); expect(dress.fields.id.type).toBe('integer');
expect(dress.fields.id.length).toBe(11); expect(dress.fields.id.length).toBe(11);
expect(dress.fields.name.type).toBe('string'); expect(dress.fields.name.type).toBe('string');
...@@ -74,7 +74,7 @@ describe('Model test', () => { ...@@ -74,7 +74,7 @@ describe('Model test', () => {
}); });
it('should register model extras', () => { it('should register model extras', () => {
const { dress } = app.model.config; const { dress } = app.model.tables;
expect(dress.primary[0]).toBe('id'); expect(dress.primary[0]).toBe('id');
expect(dress.unique[0][0]).toBe('name'); expect(dress.unique[0][0]).toBe('name');
expect(dress.foreign.parentId).toStrictEqual(['dress', 'id']); expect(dress.foreign.parentId).toStrictEqual(['dress', 'id']);
......
import { ChildModel, DefineModel, ModelField } from '../src/decorators'; import { ChildModel, ModelField } from '../src/decorators';
import { App } from 'koishi'; import { App } from 'koishi';
import { mixinModel, registerModel } from '../src/register'; import { mixinModel } from '../src/register';
import MemoryDatabase from '@koishijs/plugin-database-memory'; import * as MemoryDatabase from '@koishijs/plugin-database-memory';
import exp from 'constants';
declare module 'koishi' { declare module 'koishi' {
// eslint-disable-next-line @typescript-eslint/no-empty-interface // eslint-disable-next-line @typescript-eslint/no-empty-interface
...@@ -57,7 +56,7 @@ describe('Model test', () => { ...@@ -57,7 +56,7 @@ describe('Model test', () => {
}); });
it('should register model fields', () => { it('should register model fields', () => {
const { user } = app.model.config; const { user } = app.model.tables;
expect(user.fields['dress.size'].type).toBe('string'); expect(user.fields['dress.size'].type).toBe('string');
expect(user.fields['dress.size'].length).toBe(3); expect(user.fields['dress.size'].length).toBe(3);
expect(user.fields['shirt.size'].type).toBe('string'); expect(user.fields['shirt.size'].type).toBe('string');
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment