68 lines
2.5 KiB
Go
68 lines
2.5 KiB
Go
package model
|
|
|
|
import (
|
|
"time"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
// contextKey is a custom type for context keys
|
|
type contextKey string
|
|
|
|
// ContextLanguageID is the key for storing language ID in context
|
|
const ContextLanguageID contextKey = "languageID"
|
|
|
|
type Translation struct {
|
|
LangID uint `gorm:"primaryKey;column:lang_id"`
|
|
ScopeID uint `gorm:"primaryKey;column:scope_id"`
|
|
ComponentID uint `gorm:"primaryKey;column:component_id"`
|
|
Key string `gorm:"primaryKey;size:255;column:key"`
|
|
Data *string `gorm:"type:text;column:data"`
|
|
|
|
Language Language `gorm:"foreignKey:LangID;references:ID;constraint:OnUpdate:RESTRICT,OnDelete:RESTRICT"`
|
|
Scope Scope `gorm:"foreignKey:ScopeID;references:ID;constraint:OnUpdate:RESTRICT,OnDelete:RESTRICT"`
|
|
Component Component `gorm:"foreignKey:ComponentID;references:ID;constraint:OnUpdate:RESTRICT,OnDelete:RESTRICT"`
|
|
}
|
|
|
|
func (Translation) TableName() string {
|
|
return "b2b_translations"
|
|
}
|
|
|
|
type Language struct {
|
|
ID uint `gorm:"primaryKey;autoIncrement;column:id"`
|
|
CreatedAt time.Time `gorm:"not null;column:created_at"`
|
|
UpdatedAt *time.Time `gorm:"column:updated_at"`
|
|
DeletedAt gorm.DeletedAt `gorm:"index:idx_language_deleted_at;column:deleted_at"`
|
|
Name string `gorm:"size:128;not null;column:name"`
|
|
ISOCode string `gorm:"size:2;not null;column:iso_code"`
|
|
LangCode string `gorm:"size:5;not null;column:lang_code"`
|
|
DateFormat string `gorm:"size:32;not null;column:date_format"`
|
|
DateFormatShort string `gorm:"size:32;not null;column:date_format_short"`
|
|
RTL bool `gorm:"not null;default:0;column:rtl"`
|
|
IsDefault bool `gorm:"not null;default:0;column:is_default;comment:there should be only one default language"`
|
|
Active bool `gorm:"not null;default:1;column:active"`
|
|
Flag string `gorm:"size:16;not null;column:flag"`
|
|
}
|
|
|
|
func (Language) TableName() string {
|
|
return "b2b_language"
|
|
}
|
|
|
|
type Component struct {
|
|
ID uint64 `gorm:"primaryKey;autoIncrement;column:id"`
|
|
Name string `gorm:"size:255;not null;uniqueIndex:uk_components_name;column:name"`
|
|
}
|
|
|
|
func (Component) TableName() string {
|
|
return "b2b_components"
|
|
}
|
|
|
|
type Scope struct {
|
|
ID uint64 `gorm:"primaryKey;autoIncrement;column:id"`
|
|
Name string `gorm:"size:255;not null;uniqueIndex:uk_scopes_name;column:name"`
|
|
}
|
|
|
|
func (Scope) TableName() string {
|
|
return "b2b_scopes"
|
|
}
|