diff --git a/README.md b/README.md index c69f797..e2dacbc 100644 --- a/README.md +++ b/README.md @@ -86,8 +86,8 @@ An example with two bot services is available in `docker-compose.multi-bot.examp - `src/framework/execution/CommandExecutor.ts`: unified pipeline (permissions/cooldown/execute) - `src/framework/handlers/prefixHandler.ts`: prefix entrypoint - `src/framework/handlers/slashHandler.ts`: slash entrypoint -- `src/framework/presence/presenceStore.ts`: PostgreSQL presence storage -- `src/framework/presence/presenceTypes.ts`: shared presence types/validation +- `src/database/presence/presenceStore.ts`: PostgreSQL presence storage +- `src/types/presenceTypes.ts`: shared presence types/validation - `src/i18n/*.json`: external i18n dictionaries - `src/commands/*`: business commands only (`execute`, optional `cooldown`) diff --git a/src/commands/memberMessagePanel.ts b/src/commands/memberMessagePanel.ts index b10cba9..e89b4d4 100644 --- a/src/commands/memberMessagePanel.ts +++ b/src/commands/memberMessagePanel.ts @@ -25,11 +25,11 @@ import { import { env } from "../framework/config/env.js"; import { I18nService } from "../i18n/index.js"; import { dispatchMemberMessage } from "../framework/memberMessages/memberMessageSender.js"; -import { getMemberMessageStore } from "../framework/memberMessages/memberMessageStore.js"; +import { getMemberMessageStore } from "../database/memberMessages/memberMessageStore.js"; import { MEMBER_MESSAGE_RENDER_TYPES, isMemberMessageRenderTypeValue, -} from "../framework/memberMessages/memberMessageTypes.js"; +} from "../types/memberMessageTypes.js"; import type { CommandExecutionContext } from "../types/command.js"; import type { MemberMessageConfig, diff --git a/src/commands/presence.ts b/src/commands/presence.ts index 9624824..007a19d 100644 --- a/src/commands/presence.ts +++ b/src/commands/presence.ts @@ -32,7 +32,7 @@ import type { PresenceState, PresenceStatusValue, } from "../types/presence.js"; -import { getPresenceStore } from "../framework/presence/presenceStore.js"; +import { getPresenceStore } from "../database/presence/presenceStore.js"; import { PRESENCE_TEMPLATE_REFRESH_INTERVAL_MS, containsPresenceTemplateVariables, @@ -51,7 +51,7 @@ import { sanitizeActivityText, sanitizeActivityTexts, sanitizePresenceRotationIntervalSeconds, -} from "../framework/presence/presenceTypes.js"; +} from "../types/presenceTypes.js"; import type { CommandExecutionContext } from "../types/command.js"; const presenceRuntimeByBotId = new Map(); diff --git a/src/framework/memberMessages/memberMessageStore.ts b/src/database/memberMessages/memberMessageStore.ts similarity index 97% rename from src/framework/memberMessages/memberMessageStore.ts rename to src/database/memberMessages/memberMessageStore.ts index 6025bd8..edeca4f 100644 --- a/src/framework/memberMessages/memberMessageStore.ts +++ b/src/database/memberMessages/memberMessageStore.ts @@ -1,6 +1,6 @@ import { Pool } from "pg"; -import { env } from "../config/env.js"; +import { env } from "../../framework/config/env.js"; import type { MemberMessageConfig, MemberMessageKind, @@ -9,7 +9,7 @@ import type { import { createDefaultMemberMessageConfig, isMemberMessageRenderTypeValue, -} from "./memberMessageTypes.js"; +} from "../../types/memberMessageTypes.js"; const tableSql = ` CREATE TABLE IF NOT EXISTS bot_member_message_configs ( diff --git a/src/framework/presence/presenceStore.ts b/src/database/presence/presenceStore.ts similarity index 98% rename from src/framework/presence/presenceStore.ts rename to src/database/presence/presenceStore.ts index 3c9c0fa..2604cc9 100644 --- a/src/framework/presence/presenceStore.ts +++ b/src/database/presence/presenceStore.ts @@ -1,6 +1,6 @@ import { Pool } from "pg"; -import { env } from "../config/env.js"; +import { env } from "../../framework/config/env.js"; import type { PresenceActivityTypeValue, PresenceRow, @@ -15,7 +15,7 @@ import { sanitizeActivityText, sanitizeActivityTexts, sanitizePresenceRotationIntervalSeconds, -} from "./presenceTypes.js"; +} from "../../types/presenceTypes.js"; const tableSql = ` CREATE TABLE IF NOT EXISTS bot_presence_states ( diff --git a/src/framework/memberMessages/memberMessageSender.ts b/src/framework/memberMessages/memberMessageSender.ts index a4fda82..c26ae6c 100644 --- a/src/framework/memberMessages/memberMessageSender.ts +++ b/src/framework/memberMessages/memberMessageSender.ts @@ -21,7 +21,7 @@ import type { TemplateSuffix, } from "../../types/memberMessages.js"; import { renderMemberMessageImage } from "./memberMessageImage.js"; -import { getMemberMessageStore } from "./memberMessageStore.js"; +import { getMemberMessageStore } from "../../database/memberMessages/memberMessageStore.js"; export type { DispatchMemberMessageFailureReason, DispatchMemberMessageResult, diff --git a/src/framework/presence/presenceTemplateVariables.ts b/src/framework/presence/presenceTemplateVariables.ts index daf8c5f..2f8a291 100644 --- a/src/framework/presence/presenceTemplateVariables.ts +++ b/src/framework/presence/presenceTemplateVariables.ts @@ -2,7 +2,7 @@ import type { Client } from "discord.js"; import { env } from "../config/env.js"; import { hasTemplateVariable, renderTemplate } from "../utils/templateVariables.js"; -import { sanitizeActivityText } from "./presenceTypes.js"; +import { sanitizeActivityText } from "../../types/presenceTypes.js"; export const PRESENCE_TEMPLATE_REFRESH_INTERVAL_MS = 60_000; diff --git a/src/index.ts b/src/index.ts index ed630b2..951e1a1 100644 --- a/src/index.ts +++ b/src/index.ts @@ -22,8 +22,8 @@ import { I18nService } from "./i18n/index.js"; import { initMemberMessageStore, shutdownMemberMessageStore, -} from "./framework/memberMessages/memberMessageStore.js"; -import { initPresenceStore, shutdownPresenceStore } from "./framework/presence/presenceStore.js"; +} from "./database/memberMessages/memberMessageStore.js"; +import { initPresenceStore, shutdownPresenceStore } from "./database/presence/presenceStore.js"; /** * Attache des handlers pour un arrĂȘt gracieux du process. diff --git a/src/framework/memberMessages/memberMessageTypes.ts b/src/types/memberMessageTypes.ts similarity index 91% rename from src/framework/memberMessages/memberMessageTypes.ts rename to src/types/memberMessageTypes.ts index e7ad973..72f8c2d 100644 --- a/src/framework/memberMessages/memberMessageTypes.ts +++ b/src/types/memberMessageTypes.ts @@ -2,9 +2,9 @@ import type { MemberMessageConfig, MemberMessageKind, MemberMessageRenderType, -} from "../../types/memberMessages.js"; +} from "./memberMessages.js"; -export type { MemberMessageConfig, MemberMessageKind, MemberMessageRenderType } from "../../types/memberMessages.js"; +export type { MemberMessageConfig, MemberMessageKind, MemberMessageRenderType } from "./memberMessages.js"; export const MEMBER_MESSAGE_KINDS: readonly MemberMessageKind[] = ["welcome", "goodbye"]; diff --git a/src/framework/presence/presenceTypes.ts b/src/types/presenceTypes.ts similarity index 99% rename from src/framework/presence/presenceTypes.ts rename to src/types/presenceTypes.ts index 62ef2cc..e619116 100644 --- a/src/framework/presence/presenceTypes.ts +++ b/src/types/presenceTypes.ts @@ -2,7 +2,7 @@ import type { PresenceActivityTypeValue, PresenceState, PresenceStatusValue, -} from "../../types/presence.js"; +} from "./presence.js"; export const PRESENCE_STATUSES: readonly PresenceStatusValue[] = ["online", "idle", "dnd", "invisible", "streaming"]; export const PRESENCE_ACTIVITY_TYPES: readonly PresenceActivityTypeValue[] = [ diff --git a/tests/presenceTypes.test.ts b/tests/presenceTypes.test.ts index dbbffda..1b891ff 100644 --- a/tests/presenceTypes.test.ts +++ b/tests/presenceTypes.test.ts @@ -8,7 +8,7 @@ import { parsePresenceState, sanitizeActivityTexts, sanitizePresenceRotationIntervalSeconds, -} from "../src/framework/presence/presenceTypes.js"; +} from "../src/types/presenceTypes.js"; test("sanitizeActivityTexts fallback sur le texte par defaut", () => { const texts = sanitizeActivityTexts([" ", ""]);