188e7dc7b0
Added KeyChain for newer seasons.
150 lines
3.4 KiB
Go
150 lines
3.4 KiB
Go
package storage
|
|
|
|
import (
|
|
"github.com/ectrc/snow/aid"
|
|
"gorm.io/driver/postgres"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
type PostgresStorage struct {
|
|
Postgres *gorm.DB
|
|
}
|
|
|
|
func NewPostgresStorage() *PostgresStorage {
|
|
db, err := gorm.Open(postgres.Open(aid.Config.Database.URI), &gorm.Config{})
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
return &PostgresStorage{
|
|
Postgres: db,
|
|
}
|
|
}
|
|
|
|
func (s *PostgresStorage) Migrate(table interface{}, tableName string) {
|
|
s.Postgres.Table(tableName).AutoMigrate(table)
|
|
}
|
|
|
|
func (s *PostgresStorage) DropTables() {
|
|
s.Postgres.Exec(`DROP SCHEMA public CASCADE; CREATE SCHEMA public; GRANT ALL ON SCHEMA public TO postgres; GRANT ALL ON SCHEMA public TO public;`)
|
|
}
|
|
|
|
func (s *PostgresStorage) GetPerson(personId string) *DB_Person {
|
|
var dbPerson DB_Person
|
|
s.Postgres.
|
|
Preload("Profiles").
|
|
Preload("Profiles.Items.Variants").
|
|
Preload("Profiles.Gifts.Loot").
|
|
Preload("Profiles.Attributes").
|
|
Preload("Profiles.Items").
|
|
Preload("Profiles.Gifts").
|
|
Preload("Profiles.Quests").
|
|
Find(&dbPerson)
|
|
|
|
if dbPerson.ID == "" {
|
|
return nil
|
|
}
|
|
|
|
return &dbPerson
|
|
}
|
|
|
|
func (s *PostgresStorage) GetPersonByDisplay(displayName string) *DB_Person {
|
|
var dbPerson DB_Person
|
|
s.Postgres.
|
|
Preload("Profiles").
|
|
Preload("Profiles.Items.Variants").
|
|
Preload("Profiles.Gifts.Loot").
|
|
Preload("Profiles.Attributes").
|
|
Preload("Profiles.Items").
|
|
Preload("Profiles.Gifts").
|
|
Preload("Profiles.Quests").
|
|
Where("display_name = ?", displayName).
|
|
Find(&dbPerson)
|
|
|
|
if dbPerson.ID == "" {
|
|
return nil
|
|
}
|
|
|
|
return &dbPerson
|
|
}
|
|
|
|
func (s *PostgresStorage) GetAllPersons() []*DB_Person {
|
|
var dbPersons []*DB_Person
|
|
|
|
s.Postgres.
|
|
Preload("Profiles").
|
|
Preload("Profiles.Items.Variants").
|
|
Preload("Profiles.Gifts.Loot").
|
|
Preload("Profiles.Attributes").
|
|
Preload("Profiles.Items").
|
|
Preload("Profiles.Gifts").
|
|
Preload("Profiles.Quests").
|
|
Find(&dbPersons)
|
|
|
|
return dbPersons
|
|
}
|
|
|
|
func (s *PostgresStorage) SavePerson(person *DB_Person) {
|
|
s.Postgres.Save(person)
|
|
}
|
|
|
|
func (s *PostgresStorage) DeletePerson(personId string) {
|
|
s.Postgres.Delete(&DB_Person{}, "id = ?", personId)
|
|
}
|
|
|
|
func (s *PostgresStorage) SaveProfile(profile *DB_Profile) {
|
|
s.Postgres.Save(profile)
|
|
}
|
|
|
|
func (s *PostgresStorage) DeleteProfile(profileId string) {
|
|
s.Postgres.Delete(&DB_Profile{}, "id = ?", profileId)
|
|
}
|
|
|
|
func (s *PostgresStorage) SaveItem(item *DB_Item) {
|
|
s.Postgres.Save(item)
|
|
}
|
|
|
|
func (s *PostgresStorage) DeleteItem(itemId string) {
|
|
s.Postgres.Delete(&DB_Item{}, "id = ?", itemId)
|
|
}
|
|
|
|
func (s *PostgresStorage) SaveVariant(variant *DB_VariantChannel) {
|
|
s.Postgres.Save(variant)
|
|
}
|
|
|
|
func (s *PostgresStorage) DeleteVariant(variantId string) {
|
|
s.Postgres.Delete(&DB_VariantChannel{}, "id = ?", variantId)
|
|
}
|
|
|
|
func (s *PostgresStorage) SaveQuest(quest *DB_Quest) {
|
|
s.Postgres.Save(quest)
|
|
}
|
|
|
|
func (s *PostgresStorage) DeleteQuest(questId string) {
|
|
s.Postgres.Delete(&DB_Quest{}, "id = ?", questId)
|
|
}
|
|
|
|
func (s *PostgresStorage) SaveLoot(loot *DB_Loot) {
|
|
s.Postgres.Save(loot)
|
|
}
|
|
|
|
func (s *PostgresStorage) DeleteLoot(lootId string) {
|
|
s.Postgres.Delete(&DB_Loot{}, "id = ?", lootId)
|
|
}
|
|
|
|
func (s *PostgresStorage) SaveGift(gift *DB_Gift) {
|
|
s.Postgres.Save(gift)
|
|
}
|
|
|
|
func (s *PostgresStorage) DeleteGift(giftId string) {
|
|
s.Postgres.Delete(&DB_Gift{}, "id = ?", giftId)
|
|
}
|
|
|
|
func (s *PostgresStorage) SaveAttribute(attribute *DB_PAttribute) {
|
|
s.Postgres.Save(attribute)
|
|
}
|
|
|
|
func (s *PostgresStorage) DeleteAttribute(attributeId string) {
|
|
s.Postgres.Delete(&DB_PAttribute{}, "id = ?", attributeId)
|
|
}
|