linstrom/storage/userInfoFields.go
mstar a653477e7f More API progress
This time mainly helper functions for converting an account and
associated types into their API representation
2024-11-04 07:48:46 +01:00

53 lines
1.4 KiB
Go

package storage
import (
"time"
"gorm.io/gorm"
)
// Describes a custom attribute field for accounts
type UserInfoField struct {
gorm.Model // Can actually just embed this as is here as those are not something directly exposed :3
Name string
Value string
LastUrlCheckDate *time.Time // Used if the value is an url to somewhere. Empty if value is not an url
// If the value is an url, this attribute indicates whether Linstrom was able to verify ownership
// of the provided url via the common method of
// "Does the target url contain a rel='me' link to the owner's account"
Confirmed bool
BelongsTo string // Id of account this info field belongs to
}
// TODO: Add functions to store, load, update and delete these
func (s *Storage) FindUserFieldById(id uint) (*UserInfoField, error) {
entry := UserInfoField{}
err := s.db.First(&entry, id).Error
switch err {
case nil:
return &entry, nil
case gorm.ErrRecordNotFound:
return nil, ErrEntryNotFound
default:
return nil, err
}
}
func (s *Storage) FindMultipleUserFieldsById(ids []uint) ([]UserInfoField, error) {
entries := []UserInfoField{}
err := s.db.Where(ids).Find(&entries).Error
switch err {
case gorm.ErrRecordNotFound:
return nil, ErrEntryNotFound
case nil:
return entries, nil
default:
return nil, err
}
}
func (s *Storage) AddNewUserField(name, value, belongsToId string) (*UserInfoField, error) {
// TODO: Implement me
panic("Not implemented")
}