core: build with plugins

This commit is contained in:
undefined committed 2025-03-04 10:18:22 +08:00
1 parent dec3170524
commit d72bb2074d
8 files changed
+47 -41

No files matched your search

+22 -19
View File
@@ -1,6 +1,7 @@
import { Dictionary, escapeRegExp } from 'lodash';
import { LRUCache } from 'lru-cache';
import { Filter } from 'mongodb';
import { Context } from '../context';
import { DomainDoc } from '../interface';
import bus from '../service/bus';
import db from '../service/db';
@@ -284,24 +285,26 @@ class DomainModel {
}
}
bus.on('ready', () => Promise.all([
db.ensureIndexes(
coll,
{ key: { lower: 1 }, name: 'lower', unique: true },
),
db.ensureIndexes(
collUser,
{ key: { domainId: 1, uid: 1 }, name: 'uid', unique: true },
{ key: { domainId: 1, rp: -1, uid: 1 }, name: 'rp', sparse: true },
),
]));
bus.on('domain/delete-cache', async (domainId: string) => {
const ddoc = await DomainModel.get(domainId);
if (!ddoc) return;
for (const host of ddoc.hosts || []) {
cache.delete(`host::${host}`);
}
cache.delete(`id::${domainId}`);
});
export async function apply(ctx: Context) {
ctx.on('domain/delete-cache', async (domainId: string) => {
const ddoc = await DomainModel.get(domainId);
if (!ddoc) return;
for (const host of ddoc.hosts || []) {
cache.delete(`host::${host}`);
}
cache.delete(`id::${domainId}`);
});
await Promise.all([
db.ensureIndexes(
coll,
{ key: { lower: 1 }, name: 'lower', unique: true },
),
db.ensureIndexes(
collUser,
{ key: { domainId: 1, uid: 1 }, name: 'uid', unique: true },
{ key: { domainId: 1, rp: -1, uid: 1 }, name: 'rp', sparse: true },
),
]);
}
export default DomainModel;
global.Hydro.model.domain = DomainModel;
+19 -17
View File
@@ -465,22 +465,24 @@ class UserModel {
}
}
bus.on('ready', () => Promise.all([
db.ensureIndexes(
coll,
{ key: { unameLower: 1 }, name: 'uname', unique: true },
{ key: { mailLower: 1 }, name: 'mail', unique: true },
),
db.ensureIndexes(
collV,
{ key: { unameLower: 1 }, name: 'uname', unique: true },
{ key: { mailLower: 1 }, name: 'mail', unique: true },
),
db.ensureIndexes(
collGroup,
{ key: { domainId: 1, name: 1 }, name: 'name', unique: true },
{ key: { domainId: 1, uids: 1 }, name: 'uid' },
),
]));
export async function apply() {
await Promise.all([
db.ensureIndexes(
coll,
{ key: { unameLower: 1 }, name: 'uname', unique: true },
{ key: { mailLower: 1 }, name: 'mail', unique: true },
),
db.ensureIndexes(
collV,
{ key: { unameLower: 1 }, name: 'uname', unique: true },
{ key: { mailLower: 1 }, name: 'mail', unique: true },
),
db.ensureIndexes(
collGroup,
{ key: { domainId: 1, name: 1 }, name: 'name', unique: true },
{ key: { domainId: 1, uids: 1 }, name: 'uid' },
),
]);
}
export default UserModel;
global.Hydro.model.user = UserModel;