import rxInitData from "@/utils/database/rxInitData" import { Collection as Setting, SettingNames } from "@/core/setting/collections" import initDocsData from "@/utils/database/rxInitData/initDocsData" import requirePlugins from "@/utils/scripts/requirePlugins" import rxDb from "@/utils/database/rxConnect" import { Primary as AuthPrimary } from "@/core/auth/schema" import { ENV } from "@/utils/config" interface InitData { plugin: string list: { name: string data: any }[] } export default async function initData() { const db = await rxDb() // Init Core Setting Data await rxInitData({ db, collection: Setting.name, name: SettingNames.init_status, initFunc: () => initDocsData({ db, collection: Setting.name, docsData: [ { name: SettingNames.i18n_code, value: ENV.I18N_CODE }, { name: AuthPrimary, // username value: undefined }, { name: SettingNames.role, value: undefined }, { name: SettingNames.site_name, value: undefined }, { name: SettingNames.theme, value: undefined } ] }) }) // Init Auth Plugin Data try { // @ts-ignore let { initData: authInitData } = await import(`bunadmin-plugin-auth`) initData && (await initPluginData(db, authInitData)) } catch (e) { console.warn("initData required 'bunadmin-plugin-auth'") } // Init Plugins Data const pluginsData = require("@plugins/pluginsData") pluginsData.map(async (path: string) => { const fileContent: any = requirePlugins(path) if (!fileContent) return const initData: InitData = fileContent.default await initPluginData(db, initData) }) } async function initPluginData(db: any, initData: InitData) { await rxInitData({ db, collection: Setting.name, name: `init-${initData.plugin}`, initFunc: async () => { // Loop init DocsData initData.list.map(async item => { await initDocsData({ db, collection: item.name, docsData: item.data }) }) } }) }