databag/net/server/internal/store/db_schema.go
2022-01-11 14:14:06 -08:00

184 lines
6.7 KiB
Go

package store
import "gorm.io/gorm"
func AutoMigrate(db *gorm.DB) {
db.AutoMigrate(&App{});
db.AutoMigrate(&Account{});
db.AutoMigrate(&AccountToken{});
db.AutoMigrate(&Group{});
db.AutoMigrate(&Label{});
db.AutoMigrate(&Card{});
db.AutoMigrate(&CardGroup{});
db.AutoMigrate(&LabelGroup{});
db.AutoMigrate(&Article{});
db.AutoMigrate(&ArticleAsset{});
db.AutoMigrate(&ArticleTag{});
db.AutoMigrate(&ArticleGroup{});
db.AutoMigrate(&ArticleLabel{});
}
type AccountToken struct {
ID uint `gorm:"primaryKey;not null;unique;autoIncrement"`
AccountID uint `gorm:"index"`
TokenType string `gorm:"not null; `
Token string `gorm:"not null;uniqueIndex"`
Created int64 `gorm:"autoCreateTime"`
Account Account
}
type Account struct {
ID uint `gorm:"primaryKey;not null;unique;autoIncrement"`
Did string `gorm:"not null"`
Username string `gorm:"not null;uniqueIndex"`
Password string `gorm:"not null"`
Salt string `gorm:"not null"`
Name string
Description string
Location string
Image string
profileRevision uint64 `gorm:"not null"`
contentRevision uint64 `gorm:"not null"`
viewRevision uint64 `gorm:"not null"`
groupRevision uint64 `gorm:"not null"`
labelRevision uint64 `gorm:"not null"`
cardRevision uint64 `gorm:"not null"`
dialogueRevision uint64 `gorm:"not null"`
insightRevision uint64 `gorm:"not null"`
Created int64 `gorm:"autoCreateTime"`
Apps []App
}
type App struct {
ID uint `gorm:"primaryKey;not null;unique;autoIncrement"`
AccountID uint `gorm:"index"`
Name string
Description string
Image string
Url string
Token string `gorm:"not null;index"`
Created int64 `gorm:"autoCreateTime"`
Account Account
}
type Group struct {
ID uint `gorm:"primaryKey;not null;unique;autoIncrement"`
GroupId string `gorm:"not null;index:group,unqiue"`
AccountID uint `gorm:"not null;index:group,unique"`
Revision int64 `gorm:"not null"`
DataType string `gorm:"index"`
Data string
Created int64 `gorm:"autoCreateTime"`
Updated int64 `gorm:"autoUpdateTime"`
}
type Label struct {
ID uint `gorm:"primaryKey;not null;unique;autoIncrement"`
LabelId string `gorm:"not null;index:label,unique"`
AccountID uint `gorm:"not null;index:label,unique"`
Revision int64 `gorm:"not null"`
DataType string `gorm:"index"`
Data string
Created int64 `gorm:"autoCreateTime"`
Updated int64 `gorm:"autoUpdateTime"`
}
type Card struct {
ID uint `gorm:"primaryKey;not null;unique;autoIncrement"`
CardId string `gorm:"not null;index:card,unique"`
AccountID uint `gorm:"not null;index:card,unique"`
DID string `gorm:"not null"`
Username string
Name string
Description string
Location string
Revision uint64 `gorm:"not null"`
Image string
Node string `gorm:"not null"`
Status string `gorm:"not null"`
Token string
Created int64 `gorm:"autoCreateTime"`
Updated int64 `gorm:"autoUpdateTime"`
Groups []Group `gorm:"many2many:card_groups;"`
}
type CardGroup struct {
ID uint `gorm:"primaryKey;not null;unique;autoIncrement"`
CardID uint `gorm:"not null;index:cardgroup,unique"`
GroupID uint `gorm:"not null;index:cardgroup,unique"`
Card Card
Group Group
}
type LabelGroup struct {
ID uint `gorm:"primaryKey;not null;unique;autoIncrement"`
LabelID uint `gorm:"not null;index:labelgroup,unique"`
GroupID uint `gorm:"not null;index:labelgroup,unique"`
Label Label
Group Group
}
type Article struct {
ID uint `gorm:"primaryKey;not null;unique;autoIncrement"`
ArticleId string `gorm:"not null;index:article,unique"`
AccountID uint `gorm:"not null;index:article,unique"`
Revision int64 `gorm:"not null"`
DataType string `gorm:"index"`
Data string
Status string `gorm:"not null;index"`
Created int64 `gorm:"autoCreateTime"`
Updated int64 `gorm:"autoUpdateTime"`
TagUpdated int64 `gorm:"not null"`
TagRevision uint64 `gorm:"not null"`
ArticleTags []ArticleTag
}
type ArticleAsset struct {
ID uint `gorm:"primaryKey;not null;unique;autoIncrement"`
AssetId string `gorm:"not null;index:articleasset,unique"`
ArticleID uint `gorm:"not null;index:articleasset,unique"`
Status string `gorm:"not null;index"`
Size uint64
Crc uint32
Transform string
TransformId string
TransformData string
Created int64 `gorm:"autoCreateTime"`
Article Article
}
type ArticleTag struct {
ID uint `gorm:"primaryKey;not null;unique;autoIncrement"`
TagId string `gorm:"not null;index:articletag,unique"`
ArticleID uint `gorm:"not null;index:articletag,unique"`
CardID uint
Revision int64 `gorm:"not null"`
DataType string `gorm:"index"`
Data string
Created int64 `gorm:"autoCreateTime"`
Updated int64 `gorm:"autoUpdateTime"`
Article Article
Card Card
}
type ArticleGroup struct {
ID uint `gorm:"primaryKey;not null;unique;autoIncrement"`
ArticleID uint `gorm:"not null;index"`
GroupID uint `gorm:"not null;index"`
Article Article
Group Group
}
type ArticleLabel struct {
ID uint `gorm:"primaryKey;not null;unique;autoIncrement"`
ArticleID uint `gorm:"not null;index"`
LabelID uint `gorm:"not null;index"`
Article Article
Label Label
}