fix types, refactor db manager to db

This commit is contained in:
dswbx
2025-09-04 13:00:27 +02:00
parent 758a89b5d7
commit 2c5371610b
14 changed files with 23 additions and 29 deletions

View File

@@ -2,7 +2,7 @@ import { describe, expect, mock, test } from "bun:test";
import type { ModuleBuildContext } from "../../src";
import { App, createApp } from "core/test/utils";
import * as proto from "data/prototype";
import { DbModuleManager } from "modules/manager/DbModuleManager";
import { DbModuleManager } from "modules/db/DbModuleManager";
describe("App", () => {
test("use db mode by default", async () => {

View File

@@ -2,13 +2,10 @@ import { afterEach, beforeEach, describe, expect, mock, test } from "bun:test";
import { disableConsoleLog, enableConsoleLog } from "core/utils";
import { Module } from "modules/Module";
import { getDefaultConfig } from "modules/manager/ModuleManager";
import {
type ConfigTable,
DbModuleManager as ModuleManager,
} from "modules/manager/DbModuleManager";
import { getDefaultConfig } from "modules/ModuleManager";
import { type ConfigTable, DbModuleManager as ModuleManager } from "modules/db/DbModuleManager";
import { CURRENT_VERSION, TABLE_NAME } from "modules/migrations";
import { CURRENT_VERSION, TABLE_NAME } from "modules/db/migrations";
import { getDummyConnection } from "../helper";
import { s, stripMark } from "core/utils/schema";
import { Connection } from "data/connection/Connection";

View File

@@ -11,8 +11,8 @@ import {
ModuleManager,
type ModuleBuildContext,
type ModuleManagerOptions,
} from "modules/manager/ModuleManager";
import { DbModuleManager } from "modules/manager/DbModuleManager";
} from "modules/ModuleManager";
import { DbModuleManager } from "modules/db/DbModuleManager";
import * as SystemPermissions from "modules/permissions";
import { AdminController, type AdminControllerOptions } from "modules/server/AdminController";
import { SystemController } from "modules/server/SystemController";
@@ -112,7 +112,7 @@ export type CreateAppConfig = {
options?: AppOptions;
};
export type AppConfig = InitialModuleConfigs;
export type AppConfig = { version: number } & ModuleConfigs;
export type LocalApiOptions = Request | ApiOptions;
export class App<C extends Connection = Connection, Options extends AppOptions = AppOptions> {

View File

@@ -28,7 +28,7 @@ export {
type ModuleBuildContext,
type InitialModuleConfigs,
ModuleManagerEvents,
} from "./modules/manager/ModuleManager";
} from "./modules/ModuleManager";
export type { ServerEnv } from "modules/Controller";
export type { BkndConfig } from "bknd/adapter";

View File

@@ -6,10 +6,9 @@ import { EventManager, Event } from "core/events";
import type { Connection } from "data/connection";
import { EntityManager } from "data/entities/EntityManager";
import { Hono } from "hono";
import { CURRENT_VERSION } from "modules/migrations";
import type { ServerEnv } from "../Controller";
import { Module, type ModuleBuildContext } from "../Module";
import { ModuleHelper } from "../ModuleHelper";
import type { ServerEnv } from "./Controller";
import { Module, type ModuleBuildContext } from "./Module";
import { ModuleHelper } from "./ModuleHelper";
import { AppServer } from "modules/server/AppServer";
import { AppAuth } from "auth/AppAuth";
import { AppData } from "data/AppData";
@@ -43,9 +42,7 @@ export type ModuleConfigs = {
[K in keyof ModuleSchemas]: s.Static<ModuleSchemas[K]>;
};
export type InitialModuleConfigs = {
version?: number;
} & PartialRec<ModuleConfigs>;
export type InitialModuleConfigs = { version?: number } & PartialRec<ModuleConfigs>;
enum Verbosity {
silent = 0,

View File

@@ -7,7 +7,7 @@ import * as proto from "data/prototype";
import { TransformPersistFailedException } from "data/errors";
import type { Kysely } from "kysely";
import { mergeWith } from "lodash-es";
import { CURRENT_VERSION, TABLE_NAME, migrate } from "modules/migrations";
import { CURRENT_VERSION, TABLE_NAME, migrate } from "./migrations";
import { Module, type ModuleBuildContext } from "../Module";
import {
type InitialModuleConfigs,
@@ -19,7 +19,7 @@ import {
ModuleManager,
ModuleManagerConfigUpdateEvent,
type ModuleManagerOptions,
} from "./ModuleManager";
} from "../ModuleManager";
export type { ModuleBuildContext };
@@ -45,7 +45,7 @@ const configJsonSchema = s.anyOf([
]);
export const __bknd = proto.entity(TABLE_NAME, {
version: proto.number().required(),
type: proto.enumm({ enum: ["config", "diff", "backup"] }).required(),
type: proto.enumm({ enum: ["config", "diff", "backup", "secrets"] }).required(),
json: proto.jsonSchema({ schema: configJsonSchema.toJSON() }).required(),
created_at: proto.datetime(),
updated_at: proto.datetime(),

View File

@@ -10,7 +10,7 @@ export {
type ModuleSchemas,
MODULE_NAMES,
type ModuleKey,
} from "./manager/ModuleManager";
} from "./ModuleManager";
export type { ModuleBuildContext } from "./Module";
export {

View File

@@ -10,7 +10,7 @@ import {
} from "bknd/utils";
import type { ModuleBuildContext } from "modules";
import { excludePropertyTypes, rescursiveClean } from "./utils";
import type { DbModuleManager } from "modules/manager/DbModuleManager";
import type { DbModuleManager } from "modules/db/DbModuleManager";
export const mcpSchemaSymbol = Symbol.for("bknd-mcp-schema");

View File

@@ -30,7 +30,7 @@ export const serverConfigSchema = $object(
{
description: "Server configuration",
},
);
).strict();
export type AppServerConfig = s.Static<typeof serverConfigSchema>;

View File

@@ -26,12 +26,12 @@ import {
type ModuleConfigs,
type ModuleSchemas,
type ModuleKey,
} from "modules/manager/ModuleManager";
} from "modules/ModuleManager";
import * as SystemPermissions from "modules/permissions";
import { getVersion } from "core/env";
import type { Module } from "modules/Module";
import { getSystemMcp } from "modules/mcp/system-mcp";
import { DbModuleManager } from "modules/manager/DbModuleManager";
import { DbModuleManager } from "modules/db/DbModuleManager";
export type ConfigUpdate<Key extends ModuleKey = ModuleKey> = {
success: true;

View File

@@ -28,7 +28,7 @@ export function syncConfig({
if (firstBoot) {
firstBoot = false;
await write?.(app.toJSON(true));
await write?.(app.toJSON(includeSecrets));
}
},
});

View File

@@ -1,5 +1,5 @@
import type { ModuleConfigs, ModuleSchemas } from "modules";
import { getDefaultConfig, getDefaultSchema } from "modules/manager/ModuleManager";
import { getDefaultConfig, getDefaultSchema } from "modules/ModuleManager";
import {
createContext,
startTransition,

View File

@@ -4,7 +4,7 @@ import { showRoutes } from "hono/dev";
import { App, registries } from "./src";
import { StorageLocalAdapter } from "./src/adapter/node";
import type { Connection } from "./src/data/connection/Connection";
import { __bknd } from "modules/manager/DbModuleManager";
import { __bknd } from "modules/db/DbModuleManager";
import { nodeSqlite } from "./src/adapter/node/connection/NodeSqliteConnection";
import { libsql } from "./src/data/connection/sqlite/libsql/LibsqlConnection";
import { $console } from "core/utils/console";