2025-04-24 13:58:05 -05:00
|
|
|
package databasecommands
|
2025-04-21 23:05:50 -05:00
|
|
|
|
|
|
|
import (
|
2025-04-22 16:21:40 -05:00
|
|
|
"errors"
|
2025-04-21 23:05:50 -05:00
|
|
|
"log"
|
|
|
|
|
2025-04-24 13:58:05 -05:00
|
|
|
databasemodels "example.com/database/models"
|
|
|
|
|
2025-04-21 23:05:50 -05:00
|
|
|
"gorm.io/driver/sqlite"
|
|
|
|
"gorm.io/gorm"
|
|
|
|
)
|
|
|
|
|
|
|
|
func InitializeDatabase() *gorm.DB {
|
2025-04-24 13:58:05 -05:00
|
|
|
db, err := gorm.Open(sqlite.Open("../db/main.db"), &gorm.Config{})
|
2025-04-21 23:05:50 -05:00
|
|
|
if err != nil {
|
|
|
|
log.Fatal("Failed to connect to database.")
|
|
|
|
}
|
2025-04-25 17:39:40 -05:00
|
|
|
db.AutoMigrate(
|
|
|
|
&databasemodels.User{},
|
|
|
|
&databasemodels.Group{},
|
|
|
|
&databasemodels.FunctionTag{},
|
|
|
|
&databasemodels.ItemTag{},
|
|
|
|
&databasemodels.Function{},
|
|
|
|
&databasemodels.FunctionSet{},
|
|
|
|
&databasemodels.Tier{},
|
|
|
|
&databasemodels.Role{},
|
|
|
|
&databasemodels.Person{},
|
|
|
|
&databasemodels.Item{},
|
|
|
|
&databasemodels.InventorySlot{},
|
|
|
|
&databasemodels.Character{},
|
|
|
|
&databasemodels.Customization{},
|
|
|
|
&databasemodels.Schematic{},
|
|
|
|
)
|
2025-04-21 23:05:50 -05:00
|
|
|
return db
|
|
|
|
}
|
2025-04-22 16:21:40 -05:00
|
|
|
|
2025-04-25 17:39:40 -05:00
|
|
|
// Create Functions
|
|
|
|
|
|
|
|
func CreateDatabaseUser(db *gorm.DB, user databasemodels.User) error {
|
|
|
|
result := db.Create(&user)
|
|
|
|
if result.Error != nil {
|
|
|
|
return result.Error
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2025-04-25 20:14:46 -05:00
|
|
|
func CreateDatabasePerson(db *gorm.DB, person databasemodels.Person) error {
|
|
|
|
result := db.Create(&person)
|
|
|
|
if result.Error != nil {
|
|
|
|
return result.Error
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2025-04-25 17:39:40 -05:00
|
|
|
func CreateDatabaseGroup(db *gorm.DB, group databasemodels.Group) error {
|
|
|
|
result := db.Create(&group)
|
|
|
|
if result.Error != nil {
|
|
|
|
return result.Error
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2025-04-25 20:14:46 -05:00
|
|
|
func CreateDatabaseCharacter(db *gorm.DB, character databasemodels.Character) error {
|
|
|
|
result := db.Create(&character)
|
|
|
|
if result.Error != nil {
|
|
|
|
return result.Error
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func CreateDatabaseRole(db *gorm.DB, role databasemodels.Role) error {
|
|
|
|
result := db.Create(&role)
|
|
|
|
if result.Error != nil {
|
|
|
|
return result.Error
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func CreateDatabaseTier(db *gorm.DB, tier databasemodels.Tier) error {
|
|
|
|
result := db.Create(&tier)
|
|
|
|
if result.Error != nil {
|
|
|
|
return result.Error
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func CreateDatabaseFunctionSet(db *gorm.DB, functionSet databasemodels.FunctionSet) error {
|
|
|
|
result := db.Create(&functionSet)
|
|
|
|
if result.Error != nil {
|
|
|
|
return result.Error
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2025-04-25 17:39:40 -05:00
|
|
|
func CreateDatabaseFunction(db *gorm.DB, function databasemodels.Function) error {
|
|
|
|
result := db.Create(&function)
|
|
|
|
if result.Error != nil {
|
|
|
|
return result.Error
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func CreateDatabaseFunctionTag(db *gorm.DB, functionTag databasemodels.FunctionTag) error {
|
|
|
|
result := db.Create(&functionTag)
|
|
|
|
if result.Error != nil {
|
|
|
|
return result.Error
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2025-04-25 20:14:46 -05:00
|
|
|
func CreateDatabaseInventorySlot(db *gorm.DB, inventorySlot databasemodels.InventorySlot) error {
|
|
|
|
result := db.Create(&inventorySlot)
|
|
|
|
if result.Error != nil {
|
|
|
|
return result.Error
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func CreateDatabaseItem(db *gorm.DB, item databasemodels.Item) error {
|
|
|
|
result := db.Create(&item)
|
|
|
|
if result.Error != nil {
|
|
|
|
return result.Error
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func CreateDatabaseItemTag(db *gorm.DB, itemTag databasemodels.ItemTag) error {
|
|
|
|
result := db.Create(&itemTag)
|
|
|
|
if result.Error != nil {
|
|
|
|
return result.Error
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func CreateDatabaseCustomization(db *gorm.DB, customization databasemodels.Customization) error {
|
|
|
|
result := db.Create(&customization)
|
|
|
|
if result.Error != nil {
|
|
|
|
return result.Error
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func CreateDatabaseSchematic(db *gorm.DB, schematic databasemodels.Schematic) error {
|
|
|
|
result := db.Create(&schematic)
|
|
|
|
if result.Error != nil {
|
|
|
|
return result.Error
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2025-04-25 17:39:40 -05:00
|
|
|
// Read Functions
|
|
|
|
|
2025-04-22 16:21:40 -05:00
|
|
|
func GetDatabaseUserToken(db *gorm.DB, id string) string {
|
2025-04-24 13:58:05 -05:00
|
|
|
var dbUser databasemodels.User
|
2025-04-22 16:21:40 -05:00
|
|
|
result := db.Where("id = ?", id).Select("login_token").Take(&dbUser)
|
|
|
|
if errors.Is(result.Error, gorm.ErrRecordNotFound) {
|
|
|
|
return ""
|
|
|
|
} else {
|
|
|
|
return dbUser.LoginToken
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2025-04-24 20:17:30 -05:00
|
|
|
func GetDatabaseUserExists(db *gorm.DB, id string) bool {
|
2025-04-24 13:58:05 -05:00
|
|
|
var queryUser databasemodels.User
|
2025-04-22 16:21:40 -05:00
|
|
|
result := db.Where("id = ?", id).Take(&queryUser)
|
|
|
|
if errors.Is(result.Error, gorm.ErrRecordNotFound) {
|
|
|
|
return false
|
|
|
|
} else {
|
|
|
|
return true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2025-04-24 20:17:30 -05:00
|
|
|
func GetDatabaseUserLoggedIn(db *gorm.DB, oauthTokenJSON string) bool {
|
2025-04-24 13:58:05 -05:00
|
|
|
var queryUser databasemodels.User
|
2025-04-24 20:17:30 -05:00
|
|
|
result := db.Where("login_token = ?", oauthTokenJSON).Take(&queryUser)
|
2025-04-22 19:04:17 -05:00
|
|
|
if errors.Is(result.Error, gorm.ErrRecordNotFound) {
|
|
|
|
return false
|
|
|
|
} else {
|
|
|
|
return queryUser.LoggedIn
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2025-04-25 17:39:40 -05:00
|
|
|
func GetDatabaseUserLoggedInFromDiscordId(db *gorm.DB, discordId string) bool {
|
|
|
|
var queryUser databasemodels.User
|
2025-04-25 20:14:46 -05:00
|
|
|
result := db.Where("id = ?", discordId).Take(&queryUser)
|
2025-04-25 17:39:40 -05:00
|
|
|
if errors.Is(result.Error, gorm.ErrRecordNotFound) {
|
|
|
|
return false
|
|
|
|
} else {
|
|
|
|
return queryUser.LoggedIn
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2025-04-25 20:14:46 -05:00
|
|
|
func GetDatabasePerson(db *gorm.DB, inputPerson string) databasemodels.Person {
|
|
|
|
var outputPerson databasemodels.Person
|
|
|
|
result := db.Model(&databasemodels.Person{}).Where("name = ?", inputPerson).Take(&outputPerson)
|
|
|
|
if result.Error != nil {
|
|
|
|
return databasemodels.Person{}
|
|
|
|
}
|
2025-04-27 03:22:42 -05:00
|
|
|
db.Model(&outputPerson).Association("Groups").Find(&outputPerson.Groups)
|
2025-04-25 20:14:46 -05:00
|
|
|
return outputPerson
|
|
|
|
}
|
|
|
|
|
2025-04-27 03:22:42 -05:00
|
|
|
func GetDatabasePersons(db *gorm.DB, inputPersons []string) []databasemodels.Person {
|
2025-04-25 20:14:46 -05:00
|
|
|
var outputPersons []databasemodels.Person
|
2025-04-27 03:22:42 -05:00
|
|
|
for _, inputPerson := range inputPersons {
|
|
|
|
outputPersons = append(outputPersons, GetDatabasePerson(db, inputPerson))
|
|
|
|
}
|
|
|
|
return outputPersons
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetAllDatabasePersons(db *gorm.DB) []databasemodels.Person {
|
|
|
|
var outputPersons []databasemodels.Person
|
|
|
|
result := db.Find(&outputPersons)
|
|
|
|
if result.Error != nil {
|
|
|
|
log.Println(result.Error)
|
|
|
|
}
|
2025-04-25 20:14:46 -05:00
|
|
|
for index, outputPerson := range outputPersons {
|
2025-04-27 03:22:42 -05:00
|
|
|
outputPersons[index] = GetDatabasePerson(db, outputPerson.Name)
|
2025-04-25 20:14:46 -05:00
|
|
|
}
|
|
|
|
return outputPersons
|
|
|
|
}
|
|
|
|
|
2025-04-25 17:39:40 -05:00
|
|
|
func GetDatabaseGroup(db *gorm.DB, inputGroup string) databasemodels.Group {
|
|
|
|
var outputGroup databasemodels.Group
|
|
|
|
result := db.Model(&databasemodels.Group{}).Where("name = ?", inputGroup).Take(&outputGroup)
|
2025-04-22 16:21:40 -05:00
|
|
|
if result.Error != nil {
|
2025-04-25 17:39:40 -05:00
|
|
|
return databasemodels.Group{}
|
2025-04-22 16:21:40 -05:00
|
|
|
}
|
2025-04-25 17:39:40 -05:00
|
|
|
return outputGroup
|
2025-04-22 16:21:40 -05:00
|
|
|
}
|
|
|
|
|
2025-04-27 03:22:42 -05:00
|
|
|
func GetDatabaseGroups(db *gorm.DB, inputGroups []string) []databasemodels.Group {
|
|
|
|
var outputGroups []databasemodels.Group
|
|
|
|
for _, inputGroup := range inputGroups {
|
|
|
|
outputGroups = append(outputGroups, GetDatabaseGroup(db, inputGroup))
|
|
|
|
}
|
|
|
|
return outputGroups
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetAllDatabaseGroups(db *gorm.DB) []databasemodels.Group {
|
2025-04-25 17:39:40 -05:00
|
|
|
var outputGroups []databasemodels.Group
|
|
|
|
result := db.Find(&outputGroups)
|
2025-04-22 16:21:40 -05:00
|
|
|
if result.Error != nil {
|
2025-04-27 03:22:42 -05:00
|
|
|
log.Println(result.Error)
|
2025-04-22 16:21:40 -05:00
|
|
|
}
|
2025-04-27 03:22:42 -05:00
|
|
|
for index, outputGroup := range outputGroups {
|
|
|
|
outputGroups[index] = GetDatabaseGroup(db, outputGroup.Name)
|
|
|
|
}
|
|
|
|
return outputGroups
|
2025-04-22 16:21:40 -05:00
|
|
|
}
|
2025-04-22 19:04:17 -05:00
|
|
|
|
2025-04-25 20:14:46 -05:00
|
|
|
func GetDatabaseCharacter(db *gorm.DB, inputCharacter string) databasemodels.Character {
|
|
|
|
var outputCharacter databasemodels.Character
|
|
|
|
result := db.Model(&databasemodels.Character{}).Where("name = ?", inputCharacter).Take(&outputCharacter)
|
|
|
|
if result.Error != nil {
|
|
|
|
return databasemodels.Character{}
|
|
|
|
}
|
2025-04-27 03:22:42 -05:00
|
|
|
db.Model(&outputCharacter).Association("Owners").Find(&outputCharacter.Owners)
|
|
|
|
db.Model(&outputCharacter).Association("Roles").Find(&outputCharacter.Roles)
|
|
|
|
db.Model(&outputCharacter).Association("FunctionSets").Find(&outputCharacter.FunctionSets)
|
|
|
|
db.Model(&outputCharacter).Association("Inventory").Find(&outputCharacter.Inventory)
|
2025-04-25 20:14:46 -05:00
|
|
|
return outputCharacter
|
|
|
|
}
|
|
|
|
|
2025-04-27 03:22:42 -05:00
|
|
|
func GetDatabaseCharacters(db *gorm.DB, inputCharacters []string) []databasemodels.Character {
|
|
|
|
var outputCharacters []databasemodels.Character
|
|
|
|
for _, inputCharacter := range inputCharacters {
|
|
|
|
outputCharacters = append(outputCharacters, GetDatabaseCharacter(db, inputCharacter))
|
|
|
|
}
|
|
|
|
return outputCharacters
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetAllDatabaseCharacters(db *gorm.DB) []databasemodels.Character {
|
2025-04-25 20:14:46 -05:00
|
|
|
var outputCharacters []databasemodels.Character
|
2025-04-27 03:22:42 -05:00
|
|
|
result := db.Find(&outputCharacters)
|
|
|
|
if result.Error != nil {
|
|
|
|
log.Println(result.Error)
|
|
|
|
}
|
2025-04-25 20:14:46 -05:00
|
|
|
for index, outputCharacter := range outputCharacters {
|
2025-04-27 03:22:42 -05:00
|
|
|
outputCharacters[index] = GetDatabaseCharacter(db, outputCharacter.Name)
|
2025-04-25 20:14:46 -05:00
|
|
|
}
|
|
|
|
return outputCharacters
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetDatabaseRole(db *gorm.DB, inputRole string) databasemodels.Role {
|
|
|
|
var outputRole databasemodels.Role
|
|
|
|
result := db.Model(&databasemodels.Role{}).Where("name = ?", inputRole).Take(&outputRole)
|
|
|
|
if result.Error != nil {
|
|
|
|
return databasemodels.Role{}
|
|
|
|
}
|
2025-04-27 03:22:42 -05:00
|
|
|
db.Model(&outputRole).Association("Tiers").Find(&outputRole.Tiers)
|
|
|
|
db.Model(&outputRole).Association("Visibility").Find(&outputRole.Visibility)
|
2025-04-25 20:14:46 -05:00
|
|
|
return outputRole
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetDatabaseRoles(db *gorm.DB) []databasemodels.Role {
|
|
|
|
var outputRoles []databasemodels.Role
|
|
|
|
db.Find(&outputRoles)
|
2025-04-27 03:22:42 -05:00
|
|
|
for _, outputRole := range outputRoles {
|
|
|
|
outputRoles = append(outputRoles, GetDatabaseRole(db, outputRole.Name))
|
|
|
|
}
|
|
|
|
return outputRoles
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetAllDatabaseRoles(db *gorm.DB) []databasemodels.Role {
|
|
|
|
var outputRoles []databasemodels.Role
|
|
|
|
result := db.Find(&outputRoles)
|
|
|
|
if result.Error != nil {
|
|
|
|
log.Println(result.Error)
|
|
|
|
}
|
2025-04-25 20:14:46 -05:00
|
|
|
for index, outputRole := range outputRoles {
|
2025-04-27 03:22:42 -05:00
|
|
|
outputRoles[index] = GetDatabaseRole(db, outputRole.Name)
|
2025-04-25 20:14:46 -05:00
|
|
|
}
|
|
|
|
return outputRoles
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetDatabaseTier(db *gorm.DB, inputTier int) databasemodels.Tier {
|
|
|
|
var outputTier databasemodels.Tier
|
|
|
|
result := db.Model(&databasemodels.Tier{}).Where("id = ?", inputTier).Take(&outputTier)
|
|
|
|
if result.Error != nil {
|
|
|
|
return databasemodels.Tier{}
|
|
|
|
}
|
2025-04-27 03:22:42 -05:00
|
|
|
db.Model(&outputTier).Association("FunctionSets").Find(&outputTier.FunctionSets)
|
2025-04-25 20:14:46 -05:00
|
|
|
return outputTier
|
|
|
|
}
|
|
|
|
|
2025-04-27 03:22:42 -05:00
|
|
|
func GetDatabaseTiers(db *gorm.DB, inputTiers []int) []databasemodels.Tier {
|
|
|
|
var outputTiers []databasemodels.Tier
|
|
|
|
for _, inputTier := range inputTiers {
|
|
|
|
outputTiers = append(outputTiers, GetDatabaseTier(db, inputTier))
|
|
|
|
}
|
|
|
|
return outputTiers
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetAllDatabaseTiers(db *gorm.DB) []databasemodels.Tier {
|
2025-04-25 20:14:46 -05:00
|
|
|
var outputTiers []databasemodels.Tier
|
2025-04-27 03:22:42 -05:00
|
|
|
result := db.Find(&outputTiers)
|
|
|
|
if result.Error != nil {
|
|
|
|
log.Println(result.Error)
|
|
|
|
}
|
2025-04-25 20:14:46 -05:00
|
|
|
for index, outputTier := range outputTiers {
|
2025-04-27 03:22:42 -05:00
|
|
|
outputTiers[index] = GetDatabaseTier(db, int(outputTier.ID))
|
2025-04-25 20:14:46 -05:00
|
|
|
}
|
|
|
|
return outputTiers
|
|
|
|
}
|
|
|
|
|
2025-04-27 03:22:42 -05:00
|
|
|
func GetDatabaseFunctionSet(db *gorm.DB, inputFunctionSet int) databasemodels.FunctionSet {
|
|
|
|
var outputFunctionSet databasemodels.FunctionSet
|
|
|
|
result := db.Model(&databasemodels.FunctionSet{}).Where("id = ?", inputFunctionSet).Take(&outputFunctionSet)
|
|
|
|
if result.Error != nil {
|
|
|
|
return databasemodels.FunctionSet{}
|
|
|
|
}
|
|
|
|
db.Model(&outputFunctionSet).Association("Functions").Find(&outputFunctionSet.Functions)
|
|
|
|
return outputFunctionSet
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetDatabaseFunctionSets(db *gorm.DB, inputFunctionSets []int) []databasemodels.FunctionSet {
|
|
|
|
var outputFunctionSets []databasemodels.FunctionSet
|
|
|
|
db.Find(&outputFunctionSets)
|
|
|
|
for _, inputFunctionSet := range inputFunctionSets {
|
|
|
|
outputFunctionSets = append(outputFunctionSets, GetDatabaseFunctionSet(db, inputFunctionSet))
|
|
|
|
}
|
|
|
|
return outputFunctionSets
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetAllDatabaseFunctionSets(db *gorm.DB) []databasemodels.FunctionSet {
|
|
|
|
var outputFunctionSets []databasemodels.FunctionSet
|
|
|
|
result := db.Find(&outputFunctionSets)
|
|
|
|
if result.Error != nil {
|
|
|
|
log.Println(result.Error)
|
|
|
|
}
|
|
|
|
for index, outputFunctionSet := range outputFunctionSets {
|
|
|
|
outputFunctionSets[index] = GetDatabaseFunctionSet(db, int(outputFunctionSet.ID))
|
|
|
|
}
|
|
|
|
return outputFunctionSets
|
|
|
|
}
|
|
|
|
|
2025-04-25 17:39:40 -05:00
|
|
|
func GetDatabaseFunction(db *gorm.DB, inputFunction string) databasemodels.Function {
|
|
|
|
var outputFunction databasemodels.Function
|
|
|
|
result := db.Model(&databasemodels.Function{}).Where("name = ?", inputFunction).Take(&outputFunction)
|
|
|
|
if result.Error != nil {
|
|
|
|
return databasemodels.Function{}
|
|
|
|
}
|
2025-04-27 03:22:42 -05:00
|
|
|
db.Model(&outputFunction).Association("Tags").Find(&outputFunction.Tags)
|
|
|
|
db.Model(&outputFunction).Association("Requirements").Find(&outputFunction.Requirements)
|
2025-04-25 17:39:40 -05:00
|
|
|
return outputFunction
|
2025-04-24 20:17:30 -05:00
|
|
|
}
|
|
|
|
|
2025-04-27 03:22:42 -05:00
|
|
|
func GetDatabaseFunctions(db *gorm.DB, inputFunctions []string) []databasemodels.Function {
|
|
|
|
var outputFunctions []databasemodels.Function
|
|
|
|
for _, inputFunction := range inputFunctions {
|
|
|
|
outputFunctions = append(outputFunctions, GetDatabaseFunction(db, inputFunction))
|
|
|
|
}
|
|
|
|
return outputFunctions
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetAllDatabaseFunctions(db *gorm.DB) []databasemodels.Function {
|
2025-04-25 17:39:40 -05:00
|
|
|
var outputFunctions []databasemodels.Function
|
2025-04-27 03:22:42 -05:00
|
|
|
result := db.Find(&outputFunctions)
|
|
|
|
if result.Error != nil {
|
|
|
|
log.Println(result.Error)
|
|
|
|
}
|
2025-04-25 20:14:46 -05:00
|
|
|
for index, outputFunction := range outputFunctions {
|
2025-04-27 03:22:42 -05:00
|
|
|
outputFunctions[index] = GetDatabaseFunction(db, outputFunction.Name)
|
2025-04-25 20:14:46 -05:00
|
|
|
}
|
2025-04-25 17:39:40 -05:00
|
|
|
return outputFunctions
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetDatabaseFunctionTag(db *gorm.DB, inputFunctionTag string) databasemodels.FunctionTag {
|
|
|
|
var outputFunctionTag databasemodels.FunctionTag
|
|
|
|
result := db.Model(&databasemodels.FunctionTag{}).Where("name = ?", inputFunctionTag).Take(&outputFunctionTag)
|
2025-04-24 20:17:30 -05:00
|
|
|
if result.Error != nil {
|
2025-04-25 17:39:40 -05:00
|
|
|
return databasemodels.FunctionTag{}
|
2025-04-24 20:17:30 -05:00
|
|
|
}
|
2025-04-25 17:39:40 -05:00
|
|
|
return outputFunctionTag
|
2025-04-24 20:17:30 -05:00
|
|
|
}
|
|
|
|
|
2025-04-27 03:22:42 -05:00
|
|
|
func GetDatabaseFunctionTags(db *gorm.DB, inputFunctionTags []string) []databasemodels.FunctionTag {
|
|
|
|
var outputFunctionTags []databasemodels.FunctionTag
|
|
|
|
for _, inputFunctionTag := range inputFunctionTags {
|
|
|
|
outputFunctionTags = append(outputFunctionTags, GetDatabaseFunctionTag(db, inputFunctionTag))
|
|
|
|
}
|
|
|
|
return outputFunctionTags
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetAllDatabaseFunctionTags(db *gorm.DB) []databasemodels.FunctionTag {
|
2025-04-25 17:39:40 -05:00
|
|
|
var outputFunctionTags []databasemodels.FunctionTag
|
|
|
|
result := db.Find(&outputFunctionTags)
|
2025-04-24 20:17:30 -05:00
|
|
|
if result.Error != nil {
|
2025-04-27 03:22:42 -05:00
|
|
|
log.Println(result.Error)
|
|
|
|
}
|
|
|
|
for index, outputFunctionTag := range outputFunctionTags {
|
|
|
|
outputFunctionTags[index] = GetDatabaseFunctionTag(db, outputFunctionTag.Name)
|
|
|
|
}
|
|
|
|
return outputFunctionTags
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetDatabaseInventorySlot(db *gorm.DB, inputInventorySlot int) databasemodels.InventorySlot {
|
|
|
|
var outputInventorySlot databasemodels.InventorySlot
|
|
|
|
result := db.Model(&databasemodels.InventorySlot{}).Where("id = ?", inputInventorySlot).Take(&outputInventorySlot)
|
|
|
|
if result.Error != nil {
|
|
|
|
return databasemodels.InventorySlot{}
|
|
|
|
}
|
|
|
|
db.Model(&outputInventorySlot).Association("Item").Find(&outputInventorySlot.Item)
|
|
|
|
return outputInventorySlot
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetDatabaseInventorySlots(db *gorm.DB, inputInventorySlots []int) []databasemodels.InventorySlot {
|
|
|
|
var outputInventorySlots []databasemodels.InventorySlot
|
|
|
|
for _, inputInventorySlot := range inputInventorySlots {
|
|
|
|
outputInventorySlots = append(outputInventorySlots, GetDatabaseInventorySlot(db, inputInventorySlot))
|
|
|
|
}
|
|
|
|
return outputInventorySlots
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetAllDatabaseInventorySlots(db *gorm.DB) []databasemodels.InventorySlot {
|
|
|
|
var outputInventorySlots []databasemodels.InventorySlot
|
|
|
|
result := db.Find(&outputInventorySlots)
|
|
|
|
if result.Error != nil {
|
|
|
|
log.Println(result.Error)
|
|
|
|
}
|
|
|
|
for index, outputInventorySlot := range outputInventorySlots {
|
|
|
|
outputInventorySlots[index] = GetDatabaseInventorySlot(db, int(outputInventorySlot.ID))
|
|
|
|
}
|
|
|
|
return outputInventorySlots
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetDatabaseItem(db *gorm.DB, inputItem string) databasemodels.Item {
|
|
|
|
var outputItem databasemodels.Item
|
|
|
|
result := db.Model(&databasemodels.Item{}).Where("name = ?", inputItem).Take(&outputItem)
|
|
|
|
if result.Error != nil {
|
|
|
|
return databasemodels.Item{}
|
|
|
|
}
|
|
|
|
db.Model(&outputItem).Association("Functions").Find(&outputItem.Functions)
|
|
|
|
db.Model(&outputItem).Association("Tags").Find(&outputItem.Tags)
|
|
|
|
db.Model(&outputItem).Association("Customizations").Find(&outputItem.Customizations)
|
|
|
|
db.Model(&outputItem).Association("Visibility").Find(&outputItem.Visibility)
|
|
|
|
return outputItem
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetDatabaseItems(db *gorm.DB, inputItems []string) []databasemodels.Item {
|
|
|
|
var outputItems []databasemodels.Item
|
|
|
|
for _, inputItem := range inputItems {
|
|
|
|
outputItems = append(outputItems, GetDatabaseItem(db, inputItem))
|
|
|
|
}
|
|
|
|
return outputItems
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetAllDatabaseItems(db *gorm.DB) []databasemodels.Item {
|
|
|
|
var outputItems []databasemodels.Item
|
|
|
|
result := db.Find(&outputItems)
|
|
|
|
if result.Error != nil {
|
|
|
|
log.Println(result.Error)
|
|
|
|
}
|
|
|
|
for index, outputItem := range outputItems {
|
|
|
|
outputItems[index] = GetDatabaseItem(db, outputItem.Name)
|
|
|
|
}
|
|
|
|
return outputItems
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetDatabaseItemTag(db *gorm.DB, inputItemTag string) databasemodels.ItemTag {
|
|
|
|
var outputItemTag databasemodels.ItemTag
|
|
|
|
result := db.Model(&databasemodels.ItemTag{}).Where("name = ?", outputItemTag).Take(&outputItemTag)
|
|
|
|
if result.Error != nil {
|
|
|
|
return databasemodels.ItemTag{}
|
|
|
|
}
|
|
|
|
return outputItemTag
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetDatabaseItemTags(db *gorm.DB, inputItemTags []string) []databasemodels.ItemTag {
|
|
|
|
var outputItemTags []databasemodels.ItemTag
|
|
|
|
for _, inputItemTag := range inputItemTags {
|
|
|
|
outputItemTags = append(outputItemTags, GetDatabaseItemTag(db, inputItemTag))
|
|
|
|
}
|
|
|
|
return outputItemTags
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetAllDatabaseItemTags(db *gorm.DB) []databasemodels.ItemTag {
|
|
|
|
var outputItemTags []databasemodels.ItemTag
|
|
|
|
result := db.Find(&outputItemTags)
|
|
|
|
if result.Error != nil {
|
|
|
|
log.Println(result.Error)
|
|
|
|
}
|
|
|
|
for index, outputItemTag := range outputItemTags {
|
|
|
|
outputItemTags[index] = GetDatabaseItemTag(db, outputItemTag.Name)
|
|
|
|
}
|
|
|
|
return outputItemTags
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetDatabaseCustomization(db *gorm.DB, inputCustomization string) databasemodels.Customization {
|
|
|
|
var outputCustomization databasemodels.Customization
|
|
|
|
result := db.Model(&databasemodels.Customization{}).Where("name = ?", inputCustomization).Take(&outputCustomization)
|
|
|
|
if result.Error != nil {
|
|
|
|
return databasemodels.Customization{}
|
|
|
|
}
|
|
|
|
db.Model(&outputCustomization).Association("Functions").Find(&outputCustomization.Functions)
|
|
|
|
db.Model(&outputCustomization).Association("Tags").Find(&outputCustomization.Tags)
|
|
|
|
db.Model(&outputCustomization).Association("Visibility").Find(&outputCustomization.Visibility)
|
|
|
|
return outputCustomization
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetDatabaseCustomizations(db *gorm.DB, inputCustomizations []string) []databasemodels.Customization {
|
|
|
|
var outputCustomizations []databasemodels.Customization
|
|
|
|
for _, inputCustomization := range inputCustomizations {
|
|
|
|
outputCustomizations = append(outputCustomizations, GetDatabaseCustomization(db, inputCustomization))
|
|
|
|
}
|
|
|
|
return outputCustomizations
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetAllDatabaseCustomizations(db *gorm.DB) []databasemodels.Customization {
|
|
|
|
var outputCustomizations []databasemodels.Customization
|
|
|
|
result := db.Find(&outputCustomizations)
|
|
|
|
if result.Error != nil {
|
|
|
|
log.Println(result.Error)
|
|
|
|
}
|
|
|
|
for index, outputCustomization := range outputCustomizations {
|
|
|
|
outputCustomizations[index] = GetDatabaseCustomization(db, outputCustomization.Name)
|
|
|
|
}
|
|
|
|
return outputCustomizations
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetDatabaseSchematic(db *gorm.DB, inputSchematic int) databasemodels.Schematic {
|
|
|
|
var outputSchematic databasemodels.Schematic
|
|
|
|
result := db.Model(&databasemodels.Schematic{}).Where("id = ?", inputSchematic).Take(&outputSchematic)
|
|
|
|
if result.Error != nil {
|
|
|
|
return databasemodels.Schematic{}
|
|
|
|
}
|
|
|
|
db.Model(&outputSchematic).Association("Material").Find(&outputSchematic.Material)
|
|
|
|
db.Model(&outputSchematic).Association("Tools").Find(&outputSchematic.Tools)
|
|
|
|
db.Model(&outputSchematic).Association("Requirements").Find(&outputSchematic.Requirements)
|
|
|
|
db.Model(&outputSchematic).Association("Result").Find(&outputSchematic.Result)
|
|
|
|
db.Model(&outputSchematic).Association("Visibility").Find(&outputSchematic.Visibility)
|
|
|
|
return outputSchematic
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetDatabaseSchematics(db *gorm.DB, inputSchematics []int) []databasemodels.Schematic {
|
|
|
|
var outputSchematics []databasemodels.Schematic
|
|
|
|
for _, inputSchematic := range inputSchematics {
|
|
|
|
outputSchematics = append(outputSchematics, GetDatabaseSchematic(db, inputSchematic))
|
|
|
|
}
|
|
|
|
return outputSchematics
|
|
|
|
}
|
|
|
|
|
|
|
|
func GetAllDatabaseSchematics(db *gorm.DB) []databasemodels.Schematic {
|
|
|
|
var outputSchematics []databasemodels.Schematic
|
|
|
|
result := db.Find(&outputSchematics)
|
|
|
|
if result.Error != nil {
|
|
|
|
log.Println(result.Error)
|
|
|
|
}
|
|
|
|
for index, outputSchematic := range outputSchematics {
|
|
|
|
outputSchematics[index] = GetDatabaseSchematic(db, int(outputSchematic.ID))
|
2025-04-24 20:17:30 -05:00
|
|
|
}
|
2025-04-27 03:22:42 -05:00
|
|
|
return outputSchematics
|
2025-04-24 20:17:30 -05:00
|
|
|
}
|
|
|
|
|
2025-04-25 17:39:40 -05:00
|
|
|
// Update Functions
|
|
|
|
|
|
|
|
func LogoutDatabaseUser(db *gorm.DB, oauthToken string) {
|
|
|
|
db.Model(&databasemodels.User{}).Where("login_token = ?", oauthToken).Update("logged_in", false)
|
|
|
|
}
|
|
|
|
|
|
|
|
func UpdateDatabaseUser(db *gorm.DB, user databasemodels.User) error {
|
|
|
|
result := db.Save(&user)
|
2025-04-24 20:17:30 -05:00
|
|
|
if result.Error != nil {
|
2025-04-25 17:39:40 -05:00
|
|
|
return result.Error
|
2025-04-24 20:17:30 -05:00
|
|
|
}
|
2025-04-25 17:39:40 -05:00
|
|
|
return nil
|
2025-04-22 19:04:17 -05:00
|
|
|
}
|
2025-04-25 17:39:40 -05:00
|
|
|
|
2025-04-25 20:14:46 -05:00
|
|
|
func UpdateDatabasePerson(db *gorm.DB, person databasemodels.Person) error {
|
|
|
|
result := db.Save(&person)
|
|
|
|
if result.Error != nil {
|
|
|
|
return result.Error
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func UpdateDatabaseGroup(db *gorm.DB, group databasemodels.Group) error {
|
|
|
|
result := db.Save(&group)
|
|
|
|
if result.Error != nil {
|
|
|
|
return result.Error
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func UpdateDatabaseCharacter(db *gorm.DB, character databasemodels.Character) error {
|
|
|
|
result := db.Save(&character)
|
|
|
|
if result.Error != nil {
|
|
|
|
return result.Error
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func UpdateDatabaseRole(db *gorm.DB, role databasemodels.Role) error {
|
|
|
|
result := db.Save(&role)
|
|
|
|
if result.Error != nil {
|
|
|
|
return result.Error
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func UpdateDatabaseTier(db *gorm.DB, tier databasemodels.Tier) error {
|
|
|
|
result := db.Save(&tier)
|
|
|
|
if result.Error != nil {
|
|
|
|
return result.Error
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func UpdateDatabaseFunctionSet(db *gorm.DB, functionSet databasemodels.FunctionSet) error {
|
|
|
|
result := db.Save(&functionSet)
|
|
|
|
if result.Error != nil {
|
|
|
|
return result.Error
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func UpdateDatabaseFunction(db *gorm.DB, function databasemodels.Function) error {
|
|
|
|
result := db.Save(&function)
|
|
|
|
if result.Error != nil {
|
|
|
|
return result.Error
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func UpdateDatabaseFunctionTag(db *gorm.DB, functionTag databasemodels.FunctionTag) error {
|
|
|
|
result := db.Save(&functionTag)
|
|
|
|
if result.Error != nil {
|
|
|
|
return result.Error
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func UpdateDatabaseInventorySlot(db *gorm.DB, inventoySlot databasemodels.InventorySlot) error {
|
|
|
|
result := db.Save(&inventoySlot)
|
|
|
|
if result.Error != nil {
|
|
|
|
return result.Error
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func UpdateDatabaseItem(db *gorm.DB, item databasemodels.Item) error {
|
|
|
|
result := db.Save(&item)
|
|
|
|
if result.Error != nil {
|
|
|
|
return result.Error
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func UpdateDatabaseItemTag(db *gorm.DB, itemTag databasemodels.ItemTag) error {
|
|
|
|
result := db.Save(&itemTag)
|
|
|
|
if result.Error != nil {
|
|
|
|
return result.Error
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func UpdateDatabaseCustomization(db *gorm.DB, customization databasemodels.Customization) error {
|
|
|
|
result := db.Save(&customization)
|
|
|
|
if result.Error != nil {
|
|
|
|
return result.Error
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
|
|
|
func UpdateDatabaseSchematic(db *gorm.DB, schematic databasemodels.Schematic) error {
|
|
|
|
result := db.Save(&schematic)
|
|
|
|
if result.Error != nil {
|
|
|
|
return result.Error
|
|
|
|
}
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
|
2025-04-25 17:39:40 -05:00
|
|
|
// Delete Functions
|