11import type { Kubeconfig as KubeconfigBody } from '@cpn-console/shared'
2- import type { Cluster , Prisma , Project , Stage , User , Zone } from '@prisma/client'
2+ import type { Cluster , Prisma as PrismaClient , Project , Stage , User , Zone } from '@prisma/client'
33import { ClusterPrivacySchema } from '@cpn-console/shared'
44
55const CLUSTER_PUBLIC = ClusterPrivacySchema . enum . public
@@ -19,8 +19,8 @@ export const clusterListSelect = {
1919 createdAt : true ,
2020 updatedAt : true ,
2121 stages : true ,
22- } satisfies Prisma . ClusterSelect
23- export type ClusterListRecord = Prisma . ClusterGetPayload < { select : typeof clusterListSelect } >
22+ } satisfies PrismaClient . ClusterSelect
23+ export type ClusterListRecord = PrismaClient . ClusterGetPayload < { select : typeof clusterListSelect } >
2424
2525export const clusterDetailsSelect = {
2626 id : true ,
@@ -39,8 +39,8 @@ export const clusterDetailsSelect = {
3939 projects : { select : { id : true } } ,
4040 kubeconfig : true ,
4141 stages : true ,
42- } satisfies Prisma . ClusterSelect
43- export type ClusterDetailsRecord = Prisma . ClusterGetPayload < { select : typeof clusterDetailsSelect } >
42+ } satisfies PrismaClient . ClusterSelect
43+ export type ClusterDetailsRecord = PrismaClient . ClusterGetPayload < { select : typeof clusterDetailsSelect } >
4444
4545export const clusterEnvironmentsSelect = {
4646 id : true ,
@@ -62,42 +62,10 @@ export const clusterEnvironmentsSelect = {
6262 members : true ,
6363 } ,
6464 } ,
65- } satisfies Prisma . EnvironmentSelect
66- export type ClusterEnvironmentsRecord = Prisma . EnvironmentGetPayload < { select : typeof clusterEnvironmentsSelect } >
65+ } satisfies PrismaClient . EnvironmentSelect
66+ export type ClusterEnvironmentsRecord = PrismaClient . EnvironmentGetPayload < { select : typeof clusterEnvironmentsSelect } >
6767
68- export function getClusterById ( prisma : Prisma . TransactionClient , id : Cluster [ 'id' ] ) {
69- return prisma . cluster . findUnique ( {
70- where : { id } ,
71- include : { kubeconfig : true } ,
72- } )
73- }
74-
75- export function getClusterEnvironments ( prisma : Prisma . TransactionClient , clusterId : Cluster [ 'id' ] ) {
76- return prisma . environment . findMany ( {
77- where : { clusterId } ,
78- select : clusterEnvironmentsSelect ,
79- } )
80- }
81-
82- export function getClusterDetails ( prisma : Prisma . TransactionClient , id : Cluster [ 'id' ] ) {
83- return prisma . cluster . findUniqueOrThrow ( {
84- where : { id } ,
85- select : clusterDetailsSelect ,
86- } )
87- }
88-
89- export function getClusterByLabel ( prisma : Prisma . TransactionClient , label : Cluster [ 'label' ] ) {
90- return prisma . cluster . findUnique ( { where : { label } } )
91- }
92-
93- export function listClusters ( prisma : Prisma . TransactionClient , where : Prisma . ClusterWhereInput ) {
94- return prisma . cluster . findMany ( {
95- where,
96- select : clusterListSelect ,
97- } )
98- }
99-
100- export function listClustersWhere ( userId ?: User [ 'id' ] ) : Prisma . ClusterWhereInput {
68+ export function generateClusterWhereInput ( userId ?: User [ 'id' ] ) : PrismaClient . ClusterWhereInput {
10169 return userId
10270 ? {
10371 OR : [
@@ -110,27 +78,27 @@ export function listClustersWhere(userId?: User['id']): Prisma.ClusterWhereInput
11078 : { }
11179}
11280
113- export async function getProjectsByClusterId ( prisma : Prisma . TransactionClient , id : Cluster [ 'id' ] ) {
114- return ( await prisma . cluster . findUniqueOrThrow ( {
81+ export async function getProjectsByClusterId ( tx : PrismaClient . TransactionClient , id : Cluster [ 'id' ] ) {
82+ return ( await tx . cluster . findUniqueOrThrow ( {
11583 where : { id } ,
11684 select : { projects : true } ,
11785 } ) ) ?. projects
11886}
11987
120- export async function listStagesByClusterId ( prisma : Prisma . TransactionClient , id : Cluster [ 'id' ] ) {
121- return ( await prisma . cluster . findUniqueOrThrow ( {
88+ export async function listStagesByClusterId ( tx : PrismaClient . TransactionClient , id : Cluster [ 'id' ] ) {
89+ return ( await tx . cluster . findUniqueOrThrow ( {
12290 where : { id } ,
12391 select : { stages : true } ,
12492 } ) ) ?. stages
12593}
12694
12795export function createCluster (
128- prisma : Prisma . TransactionClient ,
96+ tx : PrismaClient . TransactionClient ,
12997 data : Omit < Cluster , 'id' | 'updatedAt' | 'createdAt' | 'kubeConfigId' | 'secretName' | 'zoneId' > ,
13098 kubeconfig : Pick < KubeconfigBody , 'user' | 'cluster' > ,
13199 zoneId : string ,
132100) {
133- return prisma . cluster . create ( {
101+ return tx . cluster . create ( {
134102 data : {
135103 ...data ,
136104 kubeconfig : {
@@ -145,12 +113,12 @@ export function createCluster(
145113}
146114
147115export function updateCluster (
148- prisma : Prisma . TransactionClient ,
116+ tx : PrismaClient . TransactionClient ,
149117 id : Cluster [ 'id' ] ,
150118 data : Partial < Omit < Cluster , 'id' | 'updatedAt' | 'createdAt' | 'kubeConfigId' | 'zoneId' > > ,
151119 kubeconfig ?: Pick < KubeconfigBody , 'user' | 'cluster' > ,
152120) {
153- return prisma . cluster . update ( {
121+ return tx . cluster . update ( {
154122 where : { id } ,
155123 data : kubeconfig
156124 ? {
@@ -166,63 +134,51 @@ export function updateCluster(
166134 } )
167135}
168136
169- export function linkClusterToProjects ( prisma : Prisma . TransactionClient , id : Cluster [ 'id' ] , projectIds : Project [ 'id' ] [ ] ) {
170- return prisma . cluster . update ( {
137+ export function linkClusterToProjects ( tx : PrismaClient . TransactionClient , id : Cluster [ 'id' ] , projectIds : Project [ 'id' ] [ ] ) {
138+ return tx . cluster . update ( {
171139 where : { id } ,
172140 data : {
173141 projects : { connect : projectIds . map ( projectId => ( { id : projectId } ) ) } ,
174142 } ,
175143 } )
176144}
177145
178- export function linkClusterToStages ( prisma : Prisma . TransactionClient , id : Cluster [ 'id' ] , stageIds : Stage [ 'id' ] [ ] ) {
179- return prisma . cluster . update ( {
146+ export function linkClusterToStages ( tx : PrismaClient . TransactionClient , id : Cluster [ 'id' ] , stageIds : Stage [ 'id' ] [ ] ) {
147+ return tx . cluster . update ( {
180148 where : { id } ,
181149 data : {
182150 stages : { connect : stageIds . map ( stageId => ( { id : stageId } ) ) } ,
183151 } ,
184152 } )
185153}
186154
187- export function removeClusterFromProject ( prisma : Prisma . TransactionClient , id : Cluster [ 'id' ] , projectId : Project [ 'id' ] ) {
188- return prisma . cluster . update ( {
155+ export function removeClusterFromProject ( tx : PrismaClient . TransactionClient , id : Cluster [ 'id' ] , projectId : Project [ 'id' ] ) {
156+ return tx . cluster . update ( {
189157 where : { id } ,
190158 data : {
191159 projects : { disconnect : { id : projectId } } ,
192160 } ,
193161 } )
194162}
195163
196- export function removeClusterFromStage ( prisma : Prisma . TransactionClient , id : Cluster [ 'id' ] , stageId : Stage [ 'id' ] ) {
197- return prisma . cluster . update ( {
164+ export function removeClusterFromStage ( tx : PrismaClient . TransactionClient , id : Cluster [ 'id' ] , stageId : Stage [ 'id' ] ) {
165+ return tx . cluster . update ( {
198166 where : { id } ,
199167 data : {
200168 stages : { disconnect : { id : stageId } } ,
201169 } ,
202170 } )
203171}
204172
205- export function deleteCluster ( prisma : Prisma . TransactionClient , id : Cluster [ 'id' ] ) {
206- return prisma . cluster . delete ( { where : { id } } )
173+ export function deleteCluster ( tx : PrismaClient . TransactionClient , id : Cluster [ 'id' ] ) {
174+ return tx . cluster . delete ( { where : { id } } )
207175}
208176
209- export function linkZoneToClusters ( prisma : Prisma . TransactionClient , zoneId : Zone [ 'id' ] , clusterIds : Cluster [ 'id' ] [ ] ) {
210- return prisma . zone . update ( {
177+ export function linkZoneToClusters ( tx : PrismaClient . TransactionClient , zoneId : Zone [ 'id' ] , clusterIds : Cluster [ 'id' ] [ ] ) {
178+ return tx . zone . update ( {
211179 where : { id : zoneId } ,
212180 data : {
213181 clusters : { connect : clusterIds . map ( clusterId => ( { id : clusterId } ) ) } ,
214182 } ,
215183 } )
216184}
217-
218- export async function getClusterUsage ( prisma : Prisma . TransactionClient , clusterId : Cluster [ 'id' ] ) {
219- const clusterUsage = await prisma . environment . aggregate ( {
220- _sum : { memory : true , cpu : true , gpu : true } ,
221- where : { clusterId } ,
222- } )
223- return {
224- cpu : clusterUsage . _sum . cpu ?? 0 ,
225- gpu : clusterUsage . _sum . gpu ?? 0 ,
226- memory : clusterUsage . _sum . memory ?? 0 ,
227- }
228- }
0 commit comments