From 2d8e8af80e72d34652949822fe59d8b29642d3c7 Mon Sep 17 00:00:00 2001 From: starryskymeow Date: Thu, 17 Jul 2025 16:18:48 +0800 Subject: [PATCH] add tpyes --- internal/api/types.go | 13 ------------- internal/types/types.go | 42 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 13 deletions(-) delete mode 100644 internal/api/types.go create mode 100644 internal/types/types.go diff --git a/internal/api/types.go b/internal/api/types.go deleted file mode 100644 index a43743e..0000000 --- a/internal/api/types.go +++ /dev/null @@ -1,13 +0,0 @@ -package api - -import ( - "gitea.starryskymeow.cn/xkm/educode-controller/internal/k8s" -) - -// CreateWorkspaceRequest defines the request body for creating a new workspace. -type CreateWorkspaceRequest struct { - WorkspaceID string `json:"workspaceID" binding:"required"` - Image string `json:"image,omitempty"` - Env map[string]string `json:"env,omitempty"` - ResourceLimits *k8s.ResourceLimits `json:"resourceLimits,omitempty"` -} diff --git a/internal/types/types.go b/internal/types/types.go new file mode 100644 index 0000000..ee7d92c --- /dev/null +++ b/internal/types/types.go @@ -0,0 +1,42 @@ +package types + +type Mount struct { + WorkspaceID string `json:"workspaceID" bind:"required"` + Path string `json:"path" bind:"required"` +} + +// pvc, the storage +type Pvc struct { + ID string `json:"id" bind:"required"` + UID string `json:"uid" bind:"required"` + Limit string `json:"limit" bind:"required"` + StorageClassName string `json:"storageClassName" bind:"required"` + AccessMode string `json:"accessMode" bind:"required"` + Status string `json:"status,omitempty"` + Mount *Mount `json:"mount,omitempty"` +} + +type HttpForward struct { + Target string `json:"target" bind:"required"` + WorkspaceID string `json:"workspaceID" bind:"required"` +} + +type ResourceLimits struct { + // 1core=1000m + CPU string `json:"cpu"` + // 1Gi=1024Mi + Memory string `json:"memory"` + // temp storage limit,1Gi=1024Mi + Storage string `json:"storage"` +} + +type Workspace struct { + ID string `json:"id" bind:"required"` + UID string `json:"uid" bind:"required"` + Image string `json:"image" bind:"required"` + Envs map[string]string `json:"envs,omitempty"` + ResourceLimits *ResourceLimits `json:"resourcesLimits" bind:"required"` + Pvcs []Pvc `json:"pvcs,omitempty"` + HttpForwards []HttpForward `json:"httpForwards,omitempty"` + Status string `json:"status"` +}