From b11d5960cc3c9e025301f90eeb64b370651f6282 Mon Sep 17 00:00:00 2001 From: Shigma Date: Fri, 26 Apr 2024 12:49:43 +0800 Subject: [PATCH] feat(minato): support association api --- package.json | 2 +- packages/core/package.json | 2 +- packages/core/src/database.ts | 8 -------- packages/core/src/driver.ts | 2 +- packages/core/src/index.ts | 23 +++++++++++++++++++---- 5 files changed, 22 insertions(+), 15 deletions(-) diff --git a/package.json b/package.json index 2d715aa9..2d9528da 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "test:html": "shx rm -rf coverage && c8 -r html yarn test" }, "devDependencies": { - "@cordisjs/eslint-config": "^1.0.4", + "@cordisjs/eslint-config": "^1.1.1", "@types/mocha": "^9.1.1", "@types/node": "^20.11.30", "c8": "^7.14.0", diff --git a/packages/core/package.json b/packages/core/package.json index 33cdbf22..4dc71c6d 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -42,7 +42,7 @@ "postgres" ], "dependencies": { - "cordis": "^3.13.4", + "cordis": "^3.13.6", "cosmokit": "^1.6.2" } } diff --git a/packages/core/src/database.ts b/packages/core/src/database.ts index efffd882..48bdbbaa 100644 --- a/packages/core/src/database.ts +++ b/packages/core/src/database.ts @@ -44,17 +44,9 @@ export namespace Join2 { export type Predicate> = (args: Parameters) => Eval.Expr } -export namespace Database { - export interface Tables {} - - export interface Types {} -} - export class Database extends Service { static [Service.provide] = 'model' static [Service.immediate] = true - static readonly Tables = Symbol('minato.tables') - static readonly Types = Symbol('minato.types') static readonly transact = Symbol('minato.transact') static readonly migrate = Symbol('minato.migrate') diff --git a/packages/core/src/driver.ts b/packages/core/src/driver.ts index 63a828ef..d104888e 100644 --- a/packages/core/src/driver.ts +++ b/packages/core/src/driver.ts @@ -76,7 +76,7 @@ export abstract class Driver { ctx.model.refresh() const database = Object.create(ctx.model) database._driver = this - ctx.set('database', database) + ctx.set('database', Context.associate(database, 'database')) }) ctx.on('dispose', async () => { diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 21c06b82..630cf5bc 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -16,13 +16,28 @@ declare module 'cordis' { } interface Context { - [Database.Tables]: Database.Tables - [Database.Types]: Database.Types - database: Database - model: Database + [Types]: Types + [Tables]: Tables + [Context.Minato]: Context.Minato + [Context.Database]: Context.Database + model: Database & this[typeof Context.Minato] + database: Database & this[typeof Context.Database] + } + + namespace Context { + const Minato: unique symbol + const Database: unique symbol + interface Minato {} + interface Database {} } } export { Logger, Schema, Schema as z } from 'cordis' +export const Types = Symbol('minato.types') +export interface Types {} + +export const Tables = Symbol('minato.tables') +export interface Tables {} + export default Database