initial commit. Cloned timetracker repository
This commit is contained in:
97
app/service/langs/service.go
Normal file
97
app/service/langs/service.go
Normal file
@@ -0,0 +1,97 @@
|
||||
package langs
|
||||
|
||||
import (
|
||||
langs_repo "git.ma-al.com/goc_marek/timetracker/app/langs"
|
||||
"git.ma-al.com/goc_marek/timetracker/app/utils/i18n"
|
||||
"git.ma-al.com/goc_marek/timetracker/app/utils/nullable"
|
||||
"git.ma-al.com/goc_marek/timetracker/app/utils/response"
|
||||
"git.ma-al.com/goc_marek/timetracker/app/view"
|
||||
"github.com/gofiber/fiber/v3"
|
||||
)
|
||||
|
||||
type LangService struct {
|
||||
repo langs_repo.LangsRepo
|
||||
}
|
||||
|
||||
type LangServiceMessage i18n.I18nTranslation
|
||||
|
||||
const (
|
||||
Message_LangsLoaded LangServiceMessage = "langs_loaded"
|
||||
Message_LangsNotLoaded LangServiceMessage = "langs_not_loaded"
|
||||
Message_TranslationsOK LangServiceMessage = "translations_loaded"
|
||||
Message_TranslationsNOK LangServiceMessage = "translations_not_loaded"
|
||||
)
|
||||
|
||||
var LangSrv *LangService
|
||||
|
||||
func (s *LangService) GetActive(c fiber.Ctx) response.Response[[]view.Language] {
|
||||
res, err := s.repo.GetActive()
|
||||
if err != nil {
|
||||
return response.Make[[]view.Language](c, fiber.StatusBadRequest, nil, nil, i18n.T_(c, response.Message_NOK))
|
||||
}
|
||||
return response.Make(c, fiber.StatusOK, nullable.GetNil(res), nullable.GetNil(len(res)), i18n.T_(c, response.Message_OK))
|
||||
}
|
||||
|
||||
// LoadTranslations loads all translations from the database into the cache
|
||||
func (s *LangService) LoadTranslations() error {
|
||||
translations, err := s.repo.GetAllTranslations()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return i18n.TransStore.LoadTranslations(translations)
|
||||
}
|
||||
|
||||
// ReloadTranslations reloads translations from the database into the cache
|
||||
func (s *LangService) ReloadTranslations() error {
|
||||
translations, err := s.repo.GetAllTranslations()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return i18n.TransStore.ReloadTranslations(translations)
|
||||
}
|
||||
|
||||
// GetTranslations returns translations from the cache
|
||||
func (s *LangService) GetTranslations(c fiber.Ctx, langID uint, scope string, components []string) response.Response[*i18n.TranslationResponse] {
|
||||
translations, err := i18n.TransStore.GetTranslations(langID, scope, components)
|
||||
if err != nil {
|
||||
return response.Make[*i18n.TranslationResponse](c, fiber.StatusBadRequest, nil, nil, i18n.T_(c, Message_TranslationsNOK))
|
||||
}
|
||||
return response.Make(c, fiber.StatusOK, nullable.GetNil(translations), nil, i18n.T_(c, Message_TranslationsOK))
|
||||
}
|
||||
|
||||
// GetAllTranslations returns all translations from the cache
|
||||
func (s *LangService) GetAllTranslationsResponse(c fiber.Ctx) response.Response[*i18n.TranslationResponse] {
|
||||
translations := i18n.TransStore.GetAllTranslations()
|
||||
return response.Make(c, fiber.StatusOK, nullable.GetNil(translations), nil, i18n.T_(c, Message_TranslationsOK))
|
||||
}
|
||||
|
||||
// ReloadTranslationsResponse returns response after reloading translations
|
||||
func (s *LangService) ReloadTranslationsResponse(c fiber.Ctx) response.Response[map[string]string] {
|
||||
err := s.ReloadTranslations()
|
||||
if err != nil {
|
||||
return response.Make[map[string]string](c, fiber.StatusInternalServerError, nil, nil, i18n.T_(c, Message_LangsNotLoaded))
|
||||
}
|
||||
result := map[string]string{"status": "success"}
|
||||
return response.Make(c, fiber.StatusOK, nullable.GetNil(result), nil, i18n.T_(c, Message_LangsLoaded))
|
||||
}
|
||||
|
||||
// GetDefaultLanguage returns the default language
|
||||
func (s *LangService) GetDefaultLanguage() (*view.Language, error) {
|
||||
return s.repo.GetDefault()
|
||||
}
|
||||
|
||||
// GetLanguageByISOCode returns a language by its ISO code
|
||||
func (s *LangService) GetLanguageByISOCode(isoCode string) (*view.Language, error) {
|
||||
return s.repo.GetByISOCode(isoCode)
|
||||
}
|
||||
|
||||
// GetLanguageByISOCode returns a language by its ISO code
|
||||
func (s *LangService) GetLanguageById(id uint) (*view.Language, error) {
|
||||
return s.repo.GetById(id)
|
||||
}
|
||||
|
||||
func init() {
|
||||
LangSrv = &LangService{
|
||||
repo: *langs_repo.New(),
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user