Revert "Auto-initialize default repositories on first API call"
This reverts commit aebc8a6171.
This commit is contained in:
@@ -2,7 +2,7 @@ import 'dotenv/config'
|
|||||||
import { PrismaClient } from '../../prisma/generated/prisma/client'
|
import { PrismaClient } from '../../prisma/generated/prisma/client'
|
||||||
import { PrismaBetterSqlite3 } from '@prisma/adapter-better-sqlite3'
|
import { PrismaBetterSqlite3 } from '@prisma/adapter-better-sqlite3'
|
||||||
|
|
||||||
const globalForPrisma = globalThis as { prisma?: PrismaClient; repositoriesInitialized?: boolean };
|
const globalForPrisma = globalThis as { prisma?: PrismaClient };
|
||||||
|
|
||||||
const adapter = new PrismaBetterSqlite3({ url: process.env.DATABASE_URL! });
|
const adapter = new PrismaBetterSqlite3({ url: process.env.DATABASE_URL! });
|
||||||
|
|
||||||
@@ -12,62 +12,3 @@ export const prisma: PrismaClient = globalForPrisma.prisma ?? new PrismaClient({
|
|||||||
});
|
});
|
||||||
|
|
||||||
if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma;
|
if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma;
|
||||||
|
|
||||||
/**
|
|
||||||
* Initialize default repositories if they don't exist.
|
|
||||||
* This is called lazily to ensure it runs even when using `npm run dev`.
|
|
||||||
*/
|
|
||||||
export async function ensureDefaultRepositories(): Promise<void> {
|
|
||||||
// Only run once per process
|
|
||||||
if (globalForPrisma.repositoriesInitialized) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
const mainRepoUrl = 'https://github.com/community-scripts/ProxmoxVE';
|
|
||||||
const devRepoUrl = 'https://github.com/community-scripts/ProxmoxVED';
|
|
||||||
|
|
||||||
// Check if repositories already exist
|
|
||||||
const existingRepos = await prisma.repository.findMany({
|
|
||||||
where: {
|
|
||||||
url: {
|
|
||||||
in: [mainRepoUrl, devRepoUrl]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const existingUrls = new Set(existingRepos.map((r: { url: string }) => r.url));
|
|
||||||
|
|
||||||
// Create main repo if it doesn't exist
|
|
||||||
if (!existingUrls.has(mainRepoUrl)) {
|
|
||||||
await prisma.repository.create({
|
|
||||||
data: {
|
|
||||||
url: mainRepoUrl,
|
|
||||||
enabled: true,
|
|
||||||
is_default: true,
|
|
||||||
is_removable: false,
|
|
||||||
priority: 1
|
|
||||||
}
|
|
||||||
});
|
|
||||||
console.log('Initialized main repository:', mainRepoUrl);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Create dev repo if it doesn't exist
|
|
||||||
if (!existingUrls.has(devRepoUrl)) {
|
|
||||||
await prisma.repository.create({
|
|
||||||
data: {
|
|
||||||
url: devRepoUrl,
|
|
||||||
enabled: false,
|
|
||||||
is_default: true,
|
|
||||||
is_removable: false,
|
|
||||||
priority: 2
|
|
||||||
}
|
|
||||||
});
|
|
||||||
console.log('Initialized dev repository:', devRepoUrl);
|
|
||||||
}
|
|
||||||
|
|
||||||
globalForPrisma.repositoriesInitialized = true;
|
|
||||||
} catch (error) {
|
|
||||||
console.error('Failed to initialize default repositories:', error);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -1,19 +1,58 @@
|
|||||||
/* eslint-disable @typescript-eslint/prefer-regexp-exec */
|
/* eslint-disable @typescript-eslint/prefer-regexp-exec */
|
||||||
import { prisma, ensureDefaultRepositories } from '../db';
|
import { prisma } from '../db';
|
||||||
|
|
||||||
export class RepositoryService {
|
export class RepositoryService {
|
||||||
/**
|
/**
|
||||||
* Initialize default repositories if they don't exist
|
* Initialize default repositories if they don't exist
|
||||||
*/
|
*/
|
||||||
async initializeDefaultRepositories(): Promise<void> {
|
async initializeDefaultRepositories(): Promise<void> {
|
||||||
await ensureDefaultRepositories();
|
const mainRepoUrl = 'https://github.com/community-scripts/ProxmoxVE';
|
||||||
|
const devRepoUrl = 'https://github.com/community-scripts/ProxmoxVED';
|
||||||
|
|
||||||
|
// Check if repositories already exist
|
||||||
|
const existingRepos = await prisma.repository.findMany({
|
||||||
|
where: {
|
||||||
|
url: {
|
||||||
|
in: [mainRepoUrl, devRepoUrl]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const existingUrls = new Set(existingRepos.map((r: { url: string }) => r.url));
|
||||||
|
|
||||||
|
// Create main repo if it doesn't exist
|
||||||
|
if (!existingUrls.has(mainRepoUrl)) {
|
||||||
|
await prisma.repository.create({
|
||||||
|
data: {
|
||||||
|
url: mainRepoUrl,
|
||||||
|
enabled: true,
|
||||||
|
is_default: true,
|
||||||
|
is_removable: false,
|
||||||
|
priority: 1
|
||||||
|
}
|
||||||
|
});
|
||||||
|
console.log('Initialized main repository:', mainRepoUrl);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create dev repo if it doesn't exist
|
||||||
|
if (!existingUrls.has(devRepoUrl)) {
|
||||||
|
await prisma.repository.create({
|
||||||
|
data: {
|
||||||
|
url: devRepoUrl,
|
||||||
|
enabled: false,
|
||||||
|
is_default: true,
|
||||||
|
is_removable: false,
|
||||||
|
priority: 2
|
||||||
|
}
|
||||||
|
});
|
||||||
|
console.log('Initialized dev repository:', devRepoUrl);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get all repositories, sorted by priority
|
* Get all repositories, sorted by priority
|
||||||
*/
|
*/
|
||||||
async getAllRepositories() {
|
async getAllRepositories() {
|
||||||
await ensureDefaultRepositories();
|
|
||||||
return await prisma.repository.findMany({
|
return await prisma.repository.findMany({
|
||||||
orderBy: [
|
orderBy: [
|
||||||
{ priority: 'asc' },
|
{ priority: 'asc' },
|
||||||
@@ -26,7 +65,6 @@ export class RepositoryService {
|
|||||||
* Get enabled repositories, sorted by priority
|
* Get enabled repositories, sorted by priority
|
||||||
*/
|
*/
|
||||||
async getEnabledRepositories() {
|
async getEnabledRepositories() {
|
||||||
await ensureDefaultRepositories();
|
|
||||||
return await prisma.repository.findMany({
|
return await prisma.repository.findMany({
|
||||||
where: {
|
where: {
|
||||||
enabled: true
|
enabled: true
|
||||||
|
|||||||
Reference in New Issue
Block a user