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 @@
"testEnvironment": "node"
},
"devDependencies": {
"@koishijs/plugin-database-memory": "^1.1.0",
"@koishijs/plugin-database-memory": "^1.2.0",
"@types/jest": "^27.4.1",
"@types/lodash": "^4.14.180",
"@types/node": "^17.0.23",
......@@ -55,7 +55,7 @@
"typescript": "^4.6.3"
},
"peerDependencies": {
"koishi": "^4.5.1"
"koishi": "^4.6.0"
},
"dependencies": {
"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 { reflector } from './meta/meta';
import _ from 'lodash';
......@@ -10,9 +10,9 @@ class ModelRegistrar<T = any> {
return reflector.get('ModelTableName', this.cls);
}
getFields(): Model.Field.Extension<T> {
getFields(): Field.Extension<T> {
const keys = reflector.getArray('ModelFieldKeys', this.cls);
const result: Model.Field.Extension<T> = {};
const result: Field.Extension<T> = {};
for (const key of keys) {
const field = reflector.get('ModelField', this.cls, key);
if (field) {
......@@ -22,9 +22,9 @@ class ModelRegistrar<T = any> {
return result;
}
getExtensions(): Model.Extension<T> {
getExtensions(): Model.Config<T> {
const keys = reflector.getArray('ModelFieldKeys', this.cls);
const result: Model.Extension<T> = {};
const result: Model.Config<T> = {};
const primaryKeys: string[] = [];
const uniqueMap = new Map<number | string, string[]>();
for (const key of keys) {
......@@ -67,16 +67,16 @@ class ModelRegistrar<T = any> {
return result;
}
private mergeFields(fieldDefs: Model.Field.Extension[]) {
let result: Model.Field.Extension<T> = {};
private mergeFields(fieldDefs: Field.Extension[]) {
let result: Field.Extension<T> = {};
for (const fieldDef of fieldDefs) {
result = { ...result, ...fieldDef };
}
return result;
}
private mergeExtensions(extDefs: Model.Extension<T>[]) {
const result: Model.Extension<T> = {
private mergeExtensions(extDefs: Model.Config<T>[]) {
const result: Model.Config<T> = {
autoInc: extDefs.some((ext) => ext.autoInc),
};
for (const extDef of extDefs) {
......@@ -131,7 +131,7 @@ class ModelRegistrar<T = any> {
private getChildModelResults() {
const children = this.getChildDict();
const results: [Model.Field.Extension, Model.Extension][] = [];
const results: [Field.Extension, Model.Config][] = [];
for (const key of Object.keys(children)) {
const child = children[key];
if (child) {
......@@ -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 extensions = this.getExtensions();
const childResults = this.getChildModelResults();
......@@ -169,7 +169,7 @@ export function registerModel(
throw new Error(`Model of ${cls.name} is not defined`);
}
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>>(
......@@ -186,7 +186,7 @@ export function mixinModel<K extends Keys<Tables>>(
const result = registrar.getModelResult();
ctx.model.extend(tableName, ...result);
Object.assign(
ctx.model.config[tableName].internal,
ctx.model.tables[tableName].internal,
registrar.getInternal(),
);
}
......
......@@ -8,7 +8,7 @@ import {
} from '../src/decorators';
import { App } from 'koishi';
import { registerModel } from '../src/register';
import MemoryDatabase from '@koishijs/plugin-database-memory';
import * as MemoryDatabase from '@koishijs/plugin-database-memory';
declare module 'koishi' {
// eslint-disable-next-line @typescript-eslint/no-empty-interface
......@@ -61,7 +61,7 @@ describe('Model test', () => {
});
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.length).toBe(11);
expect(dress.fields.name.type).toBe('string');
......@@ -74,7 +74,7 @@ describe('Model test', () => {
});
it('should register model extras', () => {
const { dress } = app.model.config;
const { dress } = app.model.tables;
expect(dress.primary[0]).toBe('id');
expect(dress.unique[0][0]).toBe('name');
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 { mixinModel, registerModel } from '../src/register';
import MemoryDatabase from '@koishijs/plugin-database-memory';
import exp from 'constants';
import { mixinModel } from '../src/register';
import * as MemoryDatabase from '@koishijs/plugin-database-memory';
declare module 'koishi' {
// eslint-disable-next-line @typescript-eslint/no-empty-interface
......@@ -57,7 +56,7 @@ describe('Model test', () => {
});
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'].length).toBe(3);
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