Initial commit

This commit is contained in:
2026-02-04 00:17:30 +00:00
commit 890e52af8c
127 changed files with 9682 additions and 0 deletions

View File

@@ -0,0 +1,56 @@
package models
import (
"gorm.io/gorm"
)
type User struct {
gorm.Model
Email string `gorm:"uniqueIndex;not null" json:"email"`
Password string `json:"-"`
Name string `json:"name"`
Avatar string `json:"avatar"`
Projects []Project `gorm:"foreignKey:OwnerID" json:"projects"`
}
type Project struct {
gorm.Model
Name string `gorm:"uniqueIndex" json:"name"`
RepoURL string `json:"repo_url"`
OwnerID uint `json:"owner_id"`
Port int `json:"port"`
WebhookSecret string `json:"webhook_secret"`
GitToken string `json:"-"`
BuildCommand string `json:"build_command"`
StartCommand string `json:"start_command"`
InstallCommand string `json:"install_command"`
Runtime string `json:"runtime"`
Deployments []Deployment `gorm:"foreignKey:ProjectID" json:"deployments"`
EnvVars []EnvVar `gorm:"foreignKey:ProjectID" json:"env_vars"`
}
type EnvVar struct {
gorm.Model
ProjectID uint `json:"project_id"`
Key string `json:"key"`
Value string `json:"value"`
}
type Deployment struct {
gorm.Model
ProjectID uint `json:"project_id"`
Project Project `json:"project" gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE;"`
Status string `json:"status"`
Commit string `json:"commit"`
Logs string `json:"logs"`
URL string `json:"url"`
}
type Database struct {
gorm.Model
Name string `json:"name"`
Type string `json:"type"`
Status string `json:"status"`
OwnerID uint `json:"owner_id"`
SizeMB float64 `json:"size_mb"`
}