Skip to content

Commit

Permalink
core: narrow typings
Browse files Browse the repository at this point in the history
  • Loading branch information
shigma committed Aug 27, 2020
1 parent a1e75c0 commit 289be29
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 6 deletions.
6 changes: 3 additions & 3 deletions packages/koishi-core/src/database.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ export namespace User {

export type Field = keyof User
export const fields: Field[] = []
export type Observed<K extends Field = Field> = utils.Observed<Pick<User, K>>
export type Observed<K extends Field = Field> = utils.Observed<Pick<User, K>, Promise<void>>
type Getter = (id: number, authority: number) => Partial<User>
const getters: Getter[] = []

Expand Down Expand Up @@ -94,13 +94,13 @@ export interface Database {
getUser<K extends User.Field>(userId: number, defaultAuthority?: number, fields?: readonly K[]): Promise<Pick<User, K | 'id'>>
getUsers<K extends User.Field>(fields?: readonly K[]): Promise<Pick<User, K>[]>
getUsers<K extends User.Field>(ids: readonly number[], fields?: readonly K[]): Promise<Pick<User, K>[]>
setUser(userId: number, data: Partial<User>): Promise<any>
setUser(userId: number, data: Partial<User>): Promise<void>

getGroup<K extends Group.Field>(groupId: number, fields?: readonly K[]): Promise<Pick<Group, K | 'id'>>
getGroup<K extends Group.Field>(groupId: number, selfId?: number, fields?: readonly K[]): Promise<Pick<Group, K | 'id'>>
getAllGroups<K extends Group.Field>(assignees?: readonly number[]): Promise<Pick<Group, K>[]>
getAllGroups<K extends Group.Field>(fields?: readonly K[], assignees?: readonly number[]): Promise<Pick<Group, K>[]>
setGroup(groupId: number, data: Partial<Group>): Promise<any>
setGroup(groupId: number, data: Partial<Group>): Promise<void>
}

type DatabaseExtensionMethods<I> = {
Expand Down
2 changes: 1 addition & 1 deletion packages/koishi-core/src/session.ts
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ export class Session<U extends User.Field = never, G extends Group.Field = never

// 确保匿名消息不会写回数据库
if (this.anonymous) {
const user = observe(User.create(userId, defaultAuthority))
const user = observe(User.create(userId, defaultAuthority), () => Promise.resolve())
return this.$user = user
}

Expand Down
4 changes: 2 additions & 2 deletions packages/koishi-utils/src/observe.ts
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ export function observe<T extends object, R>(target: T, ...args: [(string | numb

const observer = observeObject(target, label, null) as Observed<T>

defineProperty(observer, '_update', function (this: Observed<T>) {
defineProperty(observer, '_update', function _update(this: Observed<T>) {
const diff = { ...this._diff }
const fields = Object.keys(diff)
if (fields.length) {
Expand All @@ -146,7 +146,7 @@ export function observe<T extends object, R>(target: T, ...args: [(string | numb
}
})

defineProperty(observer, '_merge', function (this: Observed<T>, value: Partial<T>) {
defineProperty(observer, '_merge', function _merge(this: Observed<T>, value: Partial<T>) {
for (const key in value) {
if (key in this._diff) {
throw new Error(`unresolved diff key "${key}"`)
Expand Down

0 comments on commit 289be29

Please sign in to comment.