refactor(lib): organize modules by feature

This commit is contained in:
2026-08-02 16:56:55 +07:00 Unverified
parent 6c3b1cab83
commit d513b47d09
58 changed files with 85 additions and 85 deletions
@@ -4,8 +4,8 @@ import DiscordProvider from "next-auth/providers/discord";
import { DrizzleAdapter } from "@auth/drizzle-adapter";
import { db } from "@/db";
import { accounts, sessions, users, verificationTokens } from "@/db/schema";
import type { SessionWithDiscord } from "@/lib/auth";
import { addDiscordGuildMember } from "@/lib/discord";
import type { SessionWithDiscord } from "@/lib/auth/auth";
import { addDiscordGuildMember } from "@/lib/discord/discord";
const discordIdCache = new Map<string, string>();
+2 -2
View File
@@ -2,8 +2,8 @@ import "server-only";
import { getServerSession } from "next-auth";
import type { Session } from "next-auth";
import { db } from "@/db";
import { authOptions } from "@/lib/auth-options";
import { getGuildMemberRoles } from "@/lib/discord";
import { authOptions } from "@/lib/auth/auth-options";
import { getGuildMemberRoles } from "@/lib/discord/discord";
export type SessionWithDiscord = Session & {
user?: Session["user"] & {
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test";
import { isFormAcceptingSubmissions } from "@/lib/form-availability";
import { isFormAcceptingSubmissions } from "@/lib/form/form-availability";
const now = new Date("2026-07-30T12:00:00.000Z");
@@ -1,6 +1,6 @@
import { z } from "zod";
import type { FormAnswerValue } from "@/lib/form-answer-values";
import { decodeCheckboxAnswer } from "@/lib/form-answer-values";
import type { FormAnswerValue } from "@/lib/form/form-answer-values";
import { decodeCheckboxAnswer } from "@/lib/form/form-answer-values";
export type Question = {
id: string;
@@ -3,7 +3,7 @@ import {
getQuestionResponseSettings,
getQuestionResponseType,
isImageOnlyResponse,
} from "@/lib/question-response-type";
} from "@/lib/form/question-response-type";
describe("question response types", () => {
test("maps stored question settings to the four editor choices", () => {
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test";
import { normalizeSubmissionAnswers } from "@/lib/submission-intake";
import { normalizeSubmissionAnswers } from "@/lib/form/submission-intake";
const question = {
id: "question-1",
@@ -4,7 +4,7 @@ import {
encodeAnswerValue,
formatStoredAnswer,
type FormAnswerValue,
} from "@/lib/form-answer-values";
} from "@/lib/form/form-answer-values";
import { stripHtml } from "@/lib/utils";
export type SubmissionQuestion = {
@@ -4,7 +4,7 @@ import {
type NormalizedSubmissionAnswer,
type OldAnswersByQuestionId,
type SubmissionQuestion,
} from "@/lib/submission-intake";
} from "@/lib/form/submission-intake";
const NEW_SUBMISSION_TEMPLATE = "New submission from {username} ({id}).";
const UPDATED_SUBMISSION_TEMPLATE = "Submission updated by {username} ({id}).\n{update}";
+1 -1
View File
@@ -1,5 +1,5 @@
import { describe, expect, test } from "bun:test";
import { isSseTopic, sse } from "@/lib/sse";
import { isSseTopic, sse } from "@/lib/realtime/sse";
describe("leaderboard SSE contract", () => {
test("registers the public leaderboards topic", () => {
View File
@@ -13,7 +13,7 @@ import {
validateThumbnailFile,
validateVideoFile,
publishVideoJob,
} from "@/lib/video-platforms";
} from "@/lib/video/video-platforms";
import { eq } from "drizzle-orm";
const VIDEO_DIR = process.env.VIDEO_UPLOAD_DIR || "/nfs/erika";