package service import ( "encoding/json" "gorm.io/gorm" "os" "path/filepath" "work_cation/cfg" "work_cation/global" "work_cation/models" "work_cation/repo" ) type erlangCardService struct{} var ErlangCard = &erlangCardService{} func (*erlangCardService) Create(erlangCard *models.ErlangCards) error { if len(erlangCard.VarName) == 0 { erlangCard.ToolType = models.ToolTypeNoVarErlang } os.RemoveAll(filepath.Join(cfg.T.CardDir, erlangCard.UUID)) err := os.Mkdir(filepath.Join(cfg.T.CardDir, erlangCard.UUID), os.ModeDir) if err != nil { return err } info, err := os.Create(filepath.Join(cfg.T.CardDir, erlangCard.UUID, cfg.T.CardInfo)) if err != nil { return err } defer info.Close() jsonB, err := json.Marshal(erlangCard) if err != nil { return err } _, err = info.Write(jsonB) if err != nil { return err } return global.DB.Transaction(func(tx *gorm.DB) error { var baseCard = erlangCard.BaseCard err = repo.BaseCard.CreateOrSave(global.DB, &baseCard) return err }) } func (*erlangCardService) GetInfoPath(erlangCard *models.ErlangCards) string { return filepath.Join(cfg.T.CardDir, erlangCard.UUID, cfg.T.CardInfo) } func (*erlangCardService) GetImageDir(erlangCard *models.ErlangCards) []string { var coverPaths []string for _, cover := range erlangCard.Covers { coverPaths = append(coverPaths, filepath.Join(cfg.T.CardDir, erlangCard.UUID, cover)) } return coverPaths }