67 lines
1.5 KiB
Go
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
|
|
}
|