model

package
v0.0.0-...-99409e2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 27, 2018 License: AGPL-3.0 Imports: 14 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewDB

func NewDB(config *DBConfig) (*sql.DB, error)

Types

type Activity

type Activity struct {
	ID                ActivityID        `db:"id"`
	UniqueID          string            `db:"unique_id"`
	SubscriptionToken SubscriptionToken `db:"subscription_token"`
	UserID            UserID            `db:"user_id"`
	Data              *ActivityData     `db:"data"`
	CreatedAt         time.Time         `db:"created_at"`
}

type ActivityData

type ActivityData struct {
	PlaylistID      PlaylistID     `json:"playlist_id"`
	PlaylistOwnerID UserID         `json:"playlist_owner_id"`
	TrackAdded      *TrackAdded    `json:"track_added,omitempty"`
	TrackMetadata   *TrackMetadata `json:"track_metadata"`
	ActorUserID     UserID         `json:"actor_user_id,omitempty"`
	OccuredAt       time.Time      `json:"occurred_at"`
}

func (*ActivityData) Scan

func (a *ActivityData) Scan(src interface{}) error

func (*ActivityData) UniqueID

func (a *ActivityData) UniqueID() string

func (*ActivityData) Value

func (a *ActivityData) Value() (driver.Value, error)

type ActivityID

type ActivityID int64
const (
	LatestActivityID ActivityID = math.MaxInt64
)

type DBConfig

type DBConfig struct {
	HostName string
	Port     int
	User     string
	Password string
	Database string `yaml:"db_name"`
}

type DBStore

type DBStore struct {
	// contains filtered or unexported fields
}

func NewDBStore

func NewDBStore(db *sql.DB) *DBStore

func (*DBStore) AppendActivities

func (d *DBStore) AppendActivities(sub *Subscription, data []*ActivityData) ([]*Activity, error)

func (*DBStore) CreateSubscription

func (d *DBStore) CreateSubscription(sub *Subscription) (*Subscription, error)

func (*DBStore) DeleteSubscription

func (d *DBStore) DeleteSubscription(token SubscriptionToken) (bool, error)

func (*DBStore) GetUser

func (d *DBStore) GetUser(userID UserID) (*User, error)

func (*DBStore) ListActivityForUser

func (d *DBStore) ListActivityForUser(userID UserID, to ActivityID, limit int) ([]*Activity, error)

func (*DBStore) ListSubscriptionsForUser

func (d *DBStore) ListSubscriptionsForUser(userID UserID) ([]*Subscription, error)

func (*DBStore) ListSubscriptionsToCheck

func (d *DBStore) ListSubscriptionsToCheck(from time.Time, limit int) ([]*Subscription, error)

func (*DBStore) UpdateSubscriptions

func (d *DBStore) UpdateSubscriptions(subs []*Subscription) error

func (*DBStore) UpsertUser

func (d *DBStore) UpsertUser(user *User) (*User, error)

type InMemoryUserStore

type InMemoryUserStore struct {
	// contains filtered or unexported fields
}

func (*InMemoryUserStore) GetUser

func (i *InMemoryUserStore) GetUser(userID UserID) (*User, error)

func (*InMemoryUserStore) UpsertUser

func (i *InMemoryUserStore) UpsertUser(user *User) (*User, error)

type PlaylistID

type PlaylistID string

type PlaylistStore

type PlaylistStore interface {
	CreateSubscription(sub *Subscription) (*Subscription, error)
	UpdateSubscriptions(subs []*Subscription) error
	DeleteSubscription(token SubscriptionToken) (bool, error)
	ListSubscriptionsForUser(userID UserID) ([]*Subscription, error)
	ListSubscriptionsToCheck(from time.Time, limit int) ([]*Subscription, error)

	AppendActivities(sub *Subscription, data []*ActivityData) ([]*Activity, error)
	ListActivityForUser(userID UserID, to ActivityID, limit int) ([]*Activity, error)
}

type Subscription

type Subscription struct {
	Token           SubscriptionToken `db:"token"`
	UserID          UserID            `db:"user_id"`
	PlaylistID      PlaylistID        `db:"playlist_id"`
	PlaylistOwnerID UserID            `db:"playlist_owner_id"`
	PlaylistName    string            `db:"playlist_name"`
	PlaylistVersion string            `db:"playlist_version"`
	PlaylistTracks  []byte            `db:"playlist_tracks"`
	NextCheckAt     *time.Time        `db:"next_check_at"`
	CreatedAt       time.Time         `db:"created_at"`
	UpdatedAt       time.Time         `db:"updated_at"`
}

func (*Subscription) PlaylistTrackIDs

func (s *Subscription) PlaylistTrackIDs() []string

type SubscriptionID

type SubscriptionID int64

type SubscriptionToken

type SubscriptionToken string

type TrackAdded

type TrackAdded struct {
}

type TrackMetadata

type TrackMetadata struct {
	TrackID     string   `json:"track_id"`
	Name        string   `json:"name"`
	ArtistNames []string `json:"artist_names,omitempty"`
	AlbumName   string   `json:"album_name,omitempty"`
	URL         string   `json:"url,omitempty"`
	URI         string   `json:"uri,omitempty"`
}

type User

type User struct {
	ID                 UserID      `db:"id"`
	AccessToken        string      `db:"access_token"`
	RefreshToken       string      `db:"refresh_token"`
	ExpiresAt          time.Time   `db:"expires_at"`
	Name               string      `db:"name"`
	Email              string      `db:"email"`
	LastSeenActivityID *ActivityID `db:"last_seen_activity_id"`
	CreatedAt          time.Time   `db:"created_at"`
	UpdatedAt          time.Time   `db:"updated_at"`
}

type UserID

type UserID string

type UserStore

type UserStore interface {
	GetUser(userID UserID) (*User, error)
	UpsertUser(user *User) (*User, error)
}

func NewInMemoryUserStore

func NewInMemoryUserStore() UserStore

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL