♻️ refactor: move schema and migration folder (#4874)

* move schema folder

* fix tests

* fix vercel build
This commit is contained in:
Arvin Xu 2024-12-03 14:15:41 +08:00 committed by GitHub
parent b7b583dde2
commit 9aa16d4715
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
92 changed files with 62 additions and 62 deletions

View file

@ -116,7 +116,7 @@ COPY --from=builder /deps/node_modules/pg /app/node_modules/pg
COPY --from=builder /deps/node_modules/drizzle-orm /app/node_modules/drizzle-orm
# Copy database migrations
COPY --from=builder /app/src/database/server/migrations /app/migrations
COPY --from=builder /app/src/database/migrations /app/migrations
COPY --from=builder /app/scripts/migrateServerDB/docker.cjs /app/docker.cjs
COPY --from=builder /app/scripts/migrateServerDB/errorHint.js /app/errorHint.js

View file

@ -22,8 +22,8 @@ export default {
url: connectionString,
},
dialect: 'postgresql',
out: './src/database/server/migrations',
out: './src/database/migrations',
schema: './src/database/server/schemas/lobechat',
schema: './src/database/schemas',
strict: true,
} satisfies Config;

View file

@ -11,7 +11,7 @@ dotenv.config();
const runMigrations = async () => {
await migrator.migrate(serverDB, {
migrationsFolder: join(__dirname, '../../src/database/server/migrations'),
migrationsFolder: join(__dirname, '../../src/database/migrations'),
});
console.log('✅ database migration pass.');
// eslint-disable-next-line unicorn/no-process-exit

View file

@ -4,7 +4,7 @@ import { createInsertSchema } from 'drizzle-zod';
import { LobeAgentChatConfig, LobeAgentTTSConfig } from '@/types/agent';
import { idGenerator, randomSlug } from '../../utils/idGenerator';
import { idGenerator, randomSlug } from '@/database/utils/idGenerator';
import { timestamps } from './_helpers';
import { files, knowledgeBases } from './file';
import { users } from './user';

View file

@ -11,7 +11,7 @@ import {
} from 'drizzle-orm/pg-core';
import { createInsertSchema } from 'drizzle-zod';
import { idGenerator } from '../../utils/idGenerator';
import { idGenerator } from '@/database/utils/idGenerator';
import { accessedAt, createdAt, timestamps } from './_helpers';
import { asyncTasks } from './asyncTask';
import { chunks } from './rag';

View file

@ -12,7 +12,7 @@ import {
} from 'drizzle-orm/pg-core';
import { createSelectSchema } from 'drizzle-zod';
import { idGenerator } from '../../utils/idGenerator';
import { idGenerator } from '@/database/utils/idGenerator';
import { timestamps } from './_helpers';
import { agents } from './agent';
import { files } from './file';

View file

@ -2,7 +2,7 @@
import { boolean, integer, pgTable, text, unique, uniqueIndex, varchar } from 'drizzle-orm/pg-core';
import { createInsertSchema } from 'drizzle-zod';
import { idGenerator, randomSlug } from '../../utils/idGenerator';
import { idGenerator, randomSlug } from '@/database/utils/idGenerator';
import { timestamps } from './_helpers';
import { users } from './user';

View file

@ -2,7 +2,7 @@
import { boolean, jsonb, pgTable, text, unique } from 'drizzle-orm/pg-core';
import { createInsertSchema } from 'drizzle-zod';
import { idGenerator } from '../../utils/idGenerator';
import { idGenerator } from '@/database/utils/idGenerator';
import { timestamps, timestamptz } from './_helpers';
import { sessions } from './session';
import { users } from './user';

View file

@ -7,7 +7,7 @@ import ws from 'ws';
import { serverDBEnv } from '@/config/db';
import { isServerMode } from '@/const/version';
import * as schema from '../schemas/lobechat';
import * as schema from '../../schemas';
export const getDBInstance = (): NeonDatabase<typeof schema> => {
if (!isServerMode) return {} as any;

View file

@ -9,7 +9,7 @@ import ws from 'ws';
import { serverDBEnv } from '@/config/db';
import * as schema from '../schemas/lobechat';
import * as schema from '../../schemas';
export const getTestDBInstance = async () => {
let connectionString = serverDBEnv.DATABASE_TEST_URL;
@ -24,7 +24,7 @@ export const getTestDBInstance = async () => {
const db = nodeDrizzle(client, { schema });
await nodeMigrator.migrate(db, {
migrationsFolder: join(__dirname, '../migrations'),
migrationsFolder: join(__dirname, '../../migrations'),
});
return db;

View file

@ -4,7 +4,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
import { getTestDBInstance } from '@/database/server/core/dbForTest';
import { sessionGroups, users } from '../../schemas/lobechat';
import { sessionGroups, users } from '../../../schemas';
import { SessionGroupModel } from '../sessionGroup';
let serverDB = await getTestDBInstance();

View file

@ -13,7 +13,7 @@ import {
knowledgeBases,
sessions,
users,
} from '../../schemas/lobechat';
} from '../../../schemas';
import { AgentModel } from '../agent';
let serverDB = await getTestDBInstance();

View file

@ -5,7 +5,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
import { getTestDBInstance } from '@/database/server/core/dbForTest';
import { AsyncTaskStatus, AsyncTaskType } from '@/types/asyncTask';
import { asyncTasks, users } from '../../schemas/lobechat';
import { asyncTasks, users } from '../../../schemas';
import { ASYNC_TASK_TIMEOUT, AsyncTaskModel } from '../asyncTask';
let serverDB = await getTestDBInstance();

View file

@ -11,7 +11,7 @@ import {
files,
unstructuredChunks,
users,
} from '../../schemas/lobechat';
} from '../../../schemas';
import { ChunkModel } from '../chunk';
import { codeEmbedding, designThinkingQuery, designThinkingQuery2 } from './fixtures/embedding';

View file

@ -12,7 +12,7 @@ import {
knowledgeBaseFiles,
knowledgeBases,
users,
} from '../../schemas/lobechat';
} from '../../../schemas';
import { FileModel } from '../file';
let serverDB = await getTestDBInstance();

View file

@ -12,7 +12,7 @@ import {
knowledgeBaseFiles,
knowledgeBases,
users,
} from '../../schemas/lobechat';
} from '../../../schemas';
import { KnowledgeBaseModel } from '../knowledgeBase';
let serverDB = await getTestDBInstance();

View file

@ -13,7 +13,7 @@ import {
sessions,
topics,
users,
} from '../../schemas/lobechat';
} from '../../../schemas';
import { MessageModel } from '../message';
let serverDB = await getTestDBInstance();

View file

@ -15,7 +15,7 @@ import {
nextauthSessions,
nextauthVerificationTokens,
users,
} from '@/database/server/schemas/lobechat';
} from '@/database/schemas';
import { LobeNextAuthDbAdapter } from '@/libs/next-auth/adapter';
let serverDB = await getTestDBInstance();

View file

@ -3,7 +3,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
import { getTestDBInstance } from '@/database/server/core/dbForTest';
import { NewInstalledPlugin, installedPlugins, users } from '../../schemas/lobechat';
import { NewInstalledPlugin, installedPlugins, users } from '../../../schemas';
import { PluginModel } from '../plugin';
let serverDB = await getTestDBInstance();

View file

@ -13,8 +13,8 @@ import {
sessions,
topics,
users,
} from '../../schemas/lobechat';
import { idGenerator } from '../../utils/idGenerator';
} from '../../../schemas';
import { idGenerator } from '@/database/utils/idGenerator';
import { SessionModel } from '../session';
let serverDB = await getTestDBInstance();

View file

@ -5,7 +5,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
import { getTestDBInstance } from '@/database/server/core/dbForTest';
import { sessionGroups, users } from '../../schemas/lobechat';
import { sessionGroups, users } from '../../../schemas';
import { SessionGroupModel } from '../sessionGroup';
let serverDB = await getTestDBInstance();

View file

@ -3,7 +3,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
import { getTestDBInstance } from '@/database/server/core/dbForTest';
import { messages, sessions, topics, users } from '../../schemas/lobechat';
import { messages, sessions, topics, users } from '../../../schemas';
import { CreateTopicParams, TopicModel } from '../topic';
let serverDB = await getTestDBInstance();

View file

@ -7,7 +7,7 @@ import { KeyVaultsGateKeeper } from '@/server/modules/KeyVaultsEncrypt';
import { UserGuide, UserPreference } from '@/types/user';
import { UserSettings } from '@/types/user/settings';
import { userSettings, users } from '../../schemas/lobechat';
import { userSettings, users } from '../../../schemas';
import { SessionModel } from '../session';
import { UserModel } from '../user';

View file

@ -3,7 +3,7 @@ import { and, desc } from 'drizzle-orm/expressions';
import { serverDB } from '@/database/server';
import { NewSessionGroup, SessionGroupItem, sessionGroups } from '../schemas/lobechat';
import { NewSessionGroup, SessionGroupItem, sessionGroups } from '../../schemas';
export class TemplateModel {
private userId: string;

View file

@ -9,7 +9,7 @@ import {
agentsToSessions,
files,
knowledgeBases,
} from '@/database/server/schemas/lobechat';
} from '@/database/schemas';
export class AgentModel {
private userId: string;

View file

@ -9,7 +9,7 @@ import {
AsyncTaskType,
} from '@/types/asyncTask';
import { AsyncTaskSelectItem, NewAsyncTaskItem, asyncTasks } from '../schemas/lobechat';
import { AsyncTaskSelectItem, NewAsyncTaskItem, asyncTasks } from '../../schemas';
// set timeout to about 5 minutes, and give 2s padding time
export const ASYNC_TASK_TIMEOUT = 298 * 1000;

View file

@ -13,7 +13,7 @@ import {
fileChunks,
files,
unstructuredChunks,
} from '../schemas/lobechat';
} from '../../schemas';
export class ChunkModel {
private userId: string;

View file

@ -3,7 +3,7 @@ import { and } from 'drizzle-orm/expressions';
import { serverDB } from '@/database/server';
import { NewEmbeddingsItem, embeddings } from '../schemas/lobechat';
import { NewEmbeddingsItem, embeddings } from '../../schemas';
export class EmbeddingModel {
private userId: string;

View file

@ -16,7 +16,7 @@ import {
files,
globalFiles,
knowledgeBaseFiles,
} from '../schemas/lobechat';
} from '../../schemas';
export class FileModel {
private readonly userId: string;

View file

@ -4,7 +4,7 @@ import { and, desc } from 'drizzle-orm/expressions';
import { serverDB } from '@/database/server';
import { KnowledgeBaseItem } from '@/types/knowledgeBase';
import { NewKnowledgeBase, knowledgeBaseFiles, knowledgeBases } from '../schemas/lobechat';
import { NewKnowledgeBase, knowledgeBaseFiles, knowledgeBases } from '../../schemas';
export class KnowledgeBaseModel {
private userId: string;

View file

@ -2,7 +2,7 @@ import { count } from 'drizzle-orm';
import { and, asc, desc, eq, gte, inArray, isNull, like, lt } from 'drizzle-orm/expressions';
import { serverDB } from '@/database/server/core/db';
import { idGenerator } from '@/database/server/utils/idGenerator';
import { idGenerator } from '@/database/utils/idGenerator';
import { getFullFileUrl } from '@/server/utils/files';
import {
ChatFileItem,
@ -28,7 +28,7 @@ import {
messageTranslates,
messages,
messagesFiles,
} from '../schemas/lobechat';
} from '../../schemas';
export interface QueryMessageParams {
current?: number;

View file

@ -2,7 +2,7 @@ import { and, desc, eq } from 'drizzle-orm/expressions';
import { serverDB } from '@/database/server';
import { InstalledPluginItem, NewInstalledPlugin, installedPlugins } from '../schemas/lobechat';
import { InstalledPluginItem, NewInstalledPlugin, installedPlugins } from '../../schemas';
export class PluginModel {
private userId: string;

View file

@ -1,7 +1,7 @@
import { and, desc, eq } from 'drizzle-orm';
import { serverDB } from '@/database/server';
import { NewEvalDatasetsItem, evalDatasets } from '@/database/server/schemas/lobechat';
import { NewEvalDatasetsItem, evalDatasets } from '@/database/schemas';
import { RAGEvalDataSetItem } from '@/types/eval';
export class EvalDatasetModel {

View file

@ -5,7 +5,7 @@ import {
NewEvalDatasetRecordsItem,
evalDatasetRecords,
files,
} from '@/database/server/schemas/lobechat';
} from '@/database/schemas';
import { EvalDatasetRecordRefFile } from '@/types/eval';
export class EvalDatasetRecordModel {

View file

@ -6,7 +6,7 @@ import {
evalDatasets,
evalEvaluation,
evaluationRecords,
} from '@/database/server/schemas/lobechat';
} from '@/database/schemas';
import { EvalEvaluationStatus, RAGEvalEvaluationItem } from '@/types/eval';
export class EvalEvaluationModel {

View file

@ -1,7 +1,7 @@
import { and, eq } from 'drizzle-orm';
import { serverDB } from '@/database/server';
import { NewEvaluationRecordsItem, evaluationRecords } from '@/database/server/schemas/lobechat';
import { NewEvaluationRecordsItem, evaluationRecords } from '@/database/schemas';
export class EvaluationRecordModel {
private userId: string;

View file

@ -18,8 +18,8 @@ import {
agentsToSessions,
sessionGroups,
sessions,
} from '../schemas/lobechat';
import { idGenerator } from '../utils/idGenerator';
} from '../../schemas';
import { idGenerator } from '@/database/utils/idGenerator';
export class SessionModel {
private userId: string;

View file

@ -2,9 +2,9 @@ import { eq } from 'drizzle-orm';
import { and, asc, desc } from 'drizzle-orm/expressions';
import { serverDB } from '@/database/server';
import { idGenerator } from '@/database/server/utils/idGenerator';
import { idGenerator } from '@/database/utils/idGenerator';
import { SessionGroupItem, sessionGroups } from '../schemas/lobechat';
import { SessionGroupItem, sessionGroups } from '../../schemas';
export class SessionGroupModel {
private userId: string;

View file

@ -4,7 +4,7 @@ import { and, desc } from 'drizzle-orm/expressions';
import { serverDB } from '@/database/server';
import { CreateThreadParams, ThreadStatus } from '@/types/topic';
import { ThreadItem, threads } from '../schemas/lobechat';
import { ThreadItem, threads } from '../../schemas';
const queryColumns = {
createdAt: threads.createdAt,

View file

@ -3,8 +3,8 @@ import { and, desc, eq, exists, isNull, like, or } from 'drizzle-orm/expressions
import { serverDB } from '@/database/server/core/db';
import { NewMessage, TopicItem, messages, topics } from '../schemas/lobechat';
import { idGenerator } from '../utils/idGenerator';
import { NewMessage, TopicItem, messages, topics } from '../../schemas';
import { idGenerator } from '@/database/utils/idGenerator';
export interface CreateTopicParams {
favorite?: boolean;

View file

@ -8,7 +8,7 @@ import { UserGuide, UserPreference } from '@/types/user';
import { UserKeyVaults, UserSettings } from '@/types/user/settings';
import { merge } from '@/utils/merge';
import { NewUser, UserItem, userSettings, users } from '../schemas/lobechat';
import { NewUser, UserItem, userSettings, users } from '../../schemas';
import { SessionModel } from './session';
export class UserNotFoundError extends TRPCError {

View file

@ -9,7 +9,7 @@ import type { NeonDatabase } from 'drizzle-orm/neon-serverless';
import { Adapter, AdapterAccount } from 'next-auth/adapters';
import { UserModel } from '@/database/server/models/user';
import * as schema from '@/database/server/schemas/lobechat';
import * as schema from '@/database/schemas';
import { merge } from '@/utils/merge';
import {

View file

@ -1,6 +1,6 @@
import { AdapterAuthenticator, AdapterUser } from 'next-auth/adapters';
import { NewUser } from '@/database/server/schemas/lobechat';
import { NewUser } from '@/database/schemas';
export const mapAdapterUserToLobeUser = (adapterUser: AdapterUser): NewUser => {
const { id, email, name, image, emailVerified } = adapterUser;

View file

@ -1,7 +1,7 @@
import { ChunkingLoader } from 'src/libs/langchain';
import { Strategy } from 'unstructured-client/sdk/models/shared';
import { NewChunkItem, NewUnstructuredChunkItem } from '@/database/server/schemas/lobechat';
import { NewChunkItem, NewUnstructuredChunkItem } from '@/database/schemas';
import { ChunkingStrategy, Unstructured } from '@/libs/unstructured';
export interface ChunkContentParams {

View file

@ -9,7 +9,7 @@ import { ASYNC_TASK_TIMEOUT, AsyncTaskModel } from '@/database/server/models/asy
import { ChunkModel } from '@/database/server/models/chunk';
import { EmbeddingModel } from '@/database/server/models/embedding';
import { FileModel } from '@/database/server/models/file';
import { NewChunkItem, NewEmbeddingsItem } from '@/database/server/schemas/lobechat';
import { NewChunkItem, NewEmbeddingsItem } from '@/database/schemas';
import { ModelProvider } from '@/libs/agent-runtime';
import { asyncAuthedProcedure, asyncRouter as router } from '@/libs/trpc/async';
import { initAgentRuntimeWithUserPayload } from '@/server/modules/AgentRuntime';

View file

@ -1,7 +1,7 @@
import { z } from 'zod';
import { SessionGroupModel } from '@/database/server/models/sessionGroup';
import { insertSessionGroupSchema } from '@/database/server/schemas/lobechat';
import { insertSessionGroupSchema } from '@/database/schemas';
import { authedProcedure, router } from '@/libs/trpc';
import { SessionGroupItem } from '@/types/session';

View file

@ -8,7 +8,7 @@ import { ChunkModel } from '@/database/server/models/chunk';
import { EmbeddingModel } from '@/database/server/models/embedding';
import { FileModel } from '@/database/server/models/file';
import { MessageModel } from '@/database/server/models/message';
import { knowledgeBaseFiles } from '@/database/server/schemas/lobechat';
import { knowledgeBaseFiles } from '@/database/schemas';
import { ModelProvider } from '@/libs/agent-runtime';
import { authedProcedure, router } from '@/libs/trpc';
import { keyVaults } from '@/libs/trpc/middleware/keyVaults';

View file

@ -1,7 +1,7 @@
import { z } from 'zod';
import { KnowledgeBaseModel } from '@/database/server/models/knowledgeBase';
import { insertKnowledgeBasesSchema } from '@/database/server/schemas/lobechat';
import { insertKnowledgeBasesSchema } from '@/database/schemas';
import { authedProcedure, router } from '@/libs/trpc';
import { KnowledgeBaseItem } from '@/types/knowledgeBase';

View file

@ -1,7 +1,7 @@
import { z } from 'zod';
import { MessageModel } from '@/database/server/models/message';
import { updateMessagePluginSchema } from '@/database/server/schemas/lobechat';
import { updateMessagePluginSchema } from '@/database/schemas';
import { authedProcedure, publicProcedure, router } from '@/libs/trpc';
import { ChatMessage } from '@/types/message';
import { BatchTaskResult } from '@/types/service';

View file

@ -2,7 +2,7 @@ import { z } from 'zod';
import { SessionModel } from '@/database/server/models/session';
import { SessionGroupModel } from '@/database/server/models/sessionGroup';
import { insertAgentSchema, insertSessionSchema } from '@/database/server/schemas/lobechat';
import { insertAgentSchema, insertSessionSchema } from '@/database/schemas';
import { authedProcedure, publicProcedure, router } from '@/libs/trpc';
import { AgentChatConfigSchema } from '@/types/agent';
import { LobeMetaDataSchema } from '@/types/meta';

View file

@ -1,7 +1,7 @@
import { z } from 'zod';
import { SessionGroupModel } from '@/database/server/models/sessionGroup';
import { insertSessionGroupSchema } from '@/database/server/schemas/lobechat';
import { insertSessionGroupSchema } from '@/database/schemas';
import { authedProcedure, router } from '@/libs/trpc';
import { SessionGroupItem } from '@/types/session';

View file

@ -2,7 +2,7 @@ import { z } from 'zod';
import { MessageModel } from '@/database/server/models/message';
import { ThreadModel } from '@/database/server/models/thread';
import { insertThreadSchema } from '@/database/server/schemas/lobechat';
import { insertThreadSchema } from '@/database/schemas';
import { authedProcedure, router } from '@/libs/trpc';
import { ThreadItem, createThreadSchema } from '@/types/topic/thread';

View file

@ -11,7 +11,7 @@ import {
sessions,
topics,
users,
} from '@/database/server/schemas/lobechat';
} from '@/database/schemas';
import { CURRENT_CONFIG_VERSION } from '@/migrations';
import { ImportResult } from '@/services/config';
import { ImporterEntryData } from '@/types/importer';

View file

@ -11,7 +11,7 @@ import {
sessionGroups,
sessions,
topics,
} from '@/database/server/schemas/lobechat';
} from '@/database/schemas';
import { ImportResult } from '@/services/config';
import { ImporterEntryData } from '@/types/importer';

View file

@ -2,7 +2,7 @@ import { NextResponse } from 'next/server';
import { serverDB } from '@/database/server';
import { UserModel } from '@/database/server/models/user';
import { UserItem } from '@/database/server/schemas/lobechat';
import { UserItem } from '@/database/schemas';
import { pino } from '@/libs/logger';
import { LobeNextAuthDbAdapter } from '@/libs/next-auth/adapter';