2019-11-18 15:13:51 +09:00

67 lines
1.5 KiB
Go

package arn
import (
"errors"
"reflect"
)
// DraftIndex has references to unpublished drafts a user created.
type DraftIndex struct {
UserID UserID `json:"userId" primary:"true"`
GroupID GroupID `json:"groupId"`
SoundTrackID ID `json:"soundTrackId"`
CompanyID CompanyID `json:"companyId"`
QuoteID QuoteID `json:"quoteId"`
CharacterID CharacterID `json:"characterId"`
AnimeID AnimeID `json:"animeId"`
AMVID ID `json:"amvId"`
}
// NewDraftIndex ...
func NewDraftIndex(userID UserID) *DraftIndex {
return &DraftIndex{
UserID: userID,
}
}
// DraftID gets the ID for the given type name.
func (index *DraftIndex) DraftID(typeName string) (string, error) {
v := reflect.ValueOf(index).Elem()
fieldValue := v.FieldByName(typeName + "ID")
if !fieldValue.IsValid() {
return "", errors.New("Invalid draft index ID type: " + typeName)
}
return fieldValue.String(), nil
}
// SetDraftID sets the ID for the given type name.
func (index *DraftIndex) SetDraftID(typeName string, id string) error {
v := reflect.ValueOf(index).Elem()
fieldValue := v.FieldByName(typeName + "ID")
if !fieldValue.IsValid() {
return errors.New("Invalid draft index ID type: " + typeName)
}
fieldValue.SetString(id)
return nil
}
// GetID returns the ID.
func (index *DraftIndex) GetID() string {
return index.UserID
}
// GetDraftIndex ...
func GetDraftIndex(id ID) (*DraftIndex, error) {
obj, err := DB.Get("DraftIndex", id)
if err != nil {
return nil, err
}
return obj.(*DraftIndex), nil
}