mirror of
https://github.com/usual2970/certimate.git
synced 2025-06-09 05:59:50 +00:00
88 lines
1.9 KiB
Go
88 lines
1.9 KiB
Go
package domains
|
|
|
|
import (
|
|
"certimate/internal/utils/app"
|
|
"certimate/internal/utils/xtime"
|
|
"time"
|
|
|
|
"github.com/pocketbase/pocketbase/models"
|
|
)
|
|
|
|
type historyItem struct {
|
|
Time string `json:"time"`
|
|
Message string `json:"message"`
|
|
Error string `json:"error"`
|
|
}
|
|
|
|
type history struct {
|
|
Domain string `json:"domain"`
|
|
Log map[Phase][]historyItem `json:"log"`
|
|
Phase Phase `json:"phase"`
|
|
PhaseSuccess bool `json:"phaseSuccess"`
|
|
DeployedAt string `json:"deployedAt"`
|
|
}
|
|
|
|
func NewHistory(record *models.Record) *history {
|
|
return &history{
|
|
Domain: record.Id,
|
|
DeployedAt: time.Now().UTC().Format("2006-01-02T15:04:05Z"),
|
|
Log: make(map[Phase][]historyItem),
|
|
Phase: checkPhase,
|
|
PhaseSuccess: false,
|
|
}
|
|
}
|
|
|
|
func (a *history) record(phase Phase, msg string, err error, pass ...bool) {
|
|
a.Phase = phase
|
|
if len(pass) > 0 {
|
|
a.PhaseSuccess = pass[0]
|
|
}
|
|
|
|
errMsg := ""
|
|
if err != nil {
|
|
errMsg = err.Error()
|
|
a.PhaseSuccess = false
|
|
}
|
|
|
|
a.Log[phase] = append(a.Log[phase], historyItem{
|
|
Message: msg,
|
|
Error: errMsg,
|
|
Time: xtime.BeijingTimeStr(),
|
|
})
|
|
|
|
}
|
|
|
|
func (a *history) commit() error {
|
|
collection, err := app.GetApp().Dao().FindCollectionByNameOrId("deployments")
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
record := models.NewRecord(collection)
|
|
|
|
record.Set("domain", a.Domain)
|
|
record.Set("deployedAt", a.DeployedAt)
|
|
record.Set("log", a.Log)
|
|
record.Set("phase", string(a.Phase))
|
|
record.Set("phaseSuccess", a.PhaseSuccess)
|
|
|
|
if err := app.GetApp().Dao().SaveRecord(record); err != nil {
|
|
return err
|
|
}
|
|
|
|
domainRecord, err := app.GetApp().Dao().FindRecordById("domains", a.Domain)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
domainRecord.Set("lastDeployedAt", a.DeployedAt)
|
|
domainRecord.Set("lastDeployment", record.Id)
|
|
domainRecord.Set("rightnow", false)
|
|
|
|
if err := app.GetApp().Dao().SaveRecord(domainRecord); err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|