Files
portabase/src/db/services/project.ts
T

82 lines
2.0 KiB
TypeScript
Raw Normal View History

2026-06-27 17:08:38 +02:00
"use server";
import { getOrganization } from "@/lib/auth/auth";
import { db } from "@/db";
import { and, eq, isNull } from "drizzle-orm";
2025-08-01 09:21:37 +02:00
import * as drizzleDb from "@/db";
2026-06-27 17:08:38 +02:00
import { project } from "@/db/schema/06_project";
2025-08-01 09:21:37 +02:00
2026-06-27 17:08:38 +02:00
export async function getOrganizationProject(organizationId: string) {
return db.query.project.findFirst({
where: eq(project.organizationId, organizationId),
with: {
databases: {
where: isNull(drizzleDb.schemas.database.deletedAt),
},
2026-06-27 17:08:38 +02:00
},
});
}
2025-08-01 09:21:37 +02:00
2026-06-27 17:08:38 +02:00
export const getOrganizationProjectDatabases = async ({
organizationSlug,
projectId,
}: {
organizationSlug: string;
projectId: string;
2025-08-01 09:21:37 +02:00
}) => {
2026-06-27 17:08:38 +02:00
try {
const organization = await getOrganization({});
2025-08-01 09:21:37 +02:00
2026-06-27 17:08:38 +02:00
if (!organization) {
return {
name: "ErrorGettingOrganizationProjectDatabases",
message: "No organization found.",
status: 400,
cause: "Unknown error occurred.",
};
2025-08-01 09:21:37 +02:00
}
2026-06-27 17:08:38 +02:00
const databasesProject = await db.query.project.findFirst({
where: and(
eq(drizzleDb.schemas.project.organizationId, organization.id),
eq(drizzleDb.schemas.project.id, projectId),
),
with: {
databases: {
where: isNull(drizzleDb.schemas.database.deletedAt),
},
2026-06-27 17:08:38 +02:00
},
});
if (!databasesProject) {
return {
name: "ErrorGettingOrganizationProjectDatabases",
message: "No organization found.",
status: 400,
cause: "Unknown error occurred.",
};
}
return {
data: databasesProject.databases,
ids: databasesProject.databases.map((project) => project.id),
};
} catch (e: any) {
const errorMessage =
e?.response?.data?.message || e?.message || "Unknown auth error";
const status = e?.response?.status || 500;
console.error("API GettingOrganizationProjectDatabases error:", {
message: errorMessage,
status,
raw: e,
});
throw {
name: "ErrorGettingOrganizationProjectDatabases",
message: errorMessage,
status,
cause: e,
};
}
2025-08-24 20:11:34 +02:00
};