data

package
v0.2.6 Latest Latest
Warning

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

Go to latest
Published: Sep 26, 2021 License: Apache-2.0 Imports: 22 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrUserNotExist = errors.New("user not exist")
	ErrItemNotExist = errors.New("item not exist")
	ErrUnsupported  = fmt.Errorf("unsupported interface")
)
View Source
var (
	GetItemLatency = promauto.NewHistogram(prometheus.HistogramOpts{
		Name: "get_item_latency",
		Help: "Latency of GetItem",
	})
	InsertItemLatency = promauto.NewHistogram(prometheus.HistogramOpts{
		Name: "insert_item_latency",
		Help: "Latency of insertItem",
	})
	InsertFeedbackLatency = promauto.NewHistogram(prometheus.HistogramOpts{
		Name: "insert_feedback_latency",
		Help: "Latency of insertFeedback",
	})
	GetUserFeedbackLatency = promauto.NewHistogram(prometheus.HistogramOpts{
		Name: "get_user_feedback_latency",
		Help: "Latency of GetUserFeedback",
	})
	GetItemFeedbackLatency = promauto.NewHistogram(prometheus.HistogramOpts{
		Name: "get_item_feedback_latency",
		Help: "Latency of GetItemFeedback",
	})
	GetUserItemFeedbackLatency = promauto.NewHistogram(prometheus.HistogramOpts{
		Name: "get_user_item_feedback_latency",
		Help: "Latency of GetUserItemFeedback",
	})
)
View Source
var ErrNoDatabase = fmt.Errorf("no database specified for datastore")

Functions

This section is empty.

Types

type Database

type Database interface {
	Init() error
	Close() error
	Optimize() error
	BatchInsertItems(items []Item) error
	DeleteItem(itemId string) error
	GetItem(itemId string) (Item, error)
	GetItems(cursor string, n int, timeLimit *time.Time) (string, []Item, error)
	GetItemFeedback(itemId string, feedbackTypes ...string) ([]Feedback, error)
	BatchInsertUsers(users []User) error
	DeleteUser(userId string) error
	GetUser(userId string) (User, error)
	GetUsers(cursor string, n int) (string, []User, error)
	GetUserFeedback(userId string, feedbackTypes ...string) ([]Feedback, error)
	GetUserItemFeedback(userId, itemId string, feedbackTypes ...string) ([]Feedback, error)
	DeleteUserItemFeedback(userId, itemId string, feedbackTypes ...string) (int, error)
	BatchInsertFeedback(feedback []Feedback, insertUser, insertItem bool) error
	GetFeedback(cursor string, n int, timeLimit *time.Time, feedbackTypes ...string) (string, []Feedback, error)
	InsertMeasurement(measurement Measurement) error
	GetMeasurements(name string, n int) ([]Measurement, error)
	GetClickThroughRate(date time.Time, positiveTypes []string, readType string) (float64, error)
	GetUserStream(batchSize int) (chan []User, chan error)
	GetItemStream(batchSize int, timeLimit *time.Time) (chan []Item, chan error)
	GetFeedbackStream(batchSize int, timeLimit *time.Time, feedbackTypes ...string) (chan []Feedback, chan error)
}

func Open

func Open(path string) (Database, error)

Open a connection to a database.

type Feedback

type Feedback struct {
	FeedbackKey
	Timestamp time.Time
	Comment   string
}

Feedback stores feedback.

type FeedbackKey

type FeedbackKey struct {
	FeedbackType string
	UserId       string
	ItemId       string
}

FeedbackKey identifies feedback.

type Item

type Item struct {
	ItemId    string
	Timestamp time.Time
	Labels    []string
	Comment   string
}

Item stores meta data about item.

type Measurement

type Measurement struct {
	Name      string
	Timestamp time.Time
	Value     float32
	Comment   string
}

Measurement stores a statistical value.

type MongoDB

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

MongoDB is the data storage based on MongoDB.

func (*MongoDB) BatchInsertFeedback

func (db *MongoDB) BatchInsertFeedback(feedback []Feedback, insertUser, insertItem bool) error

BatchInsertFeedback returns multiple feedback into MongoDB.

func (*MongoDB) BatchInsertItems added in v0.2.6

func (db *MongoDB) BatchInsertItems(items []Item) error

BatchInsertItems insert items into MongoDB.

func (*MongoDB) BatchInsertUsers added in v0.2.6

func (db *MongoDB) BatchInsertUsers(users []User) error

BatchInsertUsers inserts a user into MongoDB.

func (*MongoDB) Close

func (db *MongoDB) Close() error

Close connection to MongoDB.

func (*MongoDB) CountActiveUsers added in v0.2.1

func (db *MongoDB) CountActiveUsers(date time.Time) (int, error)

CountActiveUsers returns the number active users starting from a specified date.

func (*MongoDB) DeleteItem

func (db *MongoDB) DeleteItem(itemId string) error

DeleteItem deletes a item from MongoDB.

func (*MongoDB) DeleteUser

func (db *MongoDB) DeleteUser(userId string) error

DeleteUser deletes a user from MongoDB.

func (*MongoDB) DeleteUserItemFeedback

func (db *MongoDB) DeleteUserItemFeedback(userId, itemId string, feedbackTypes ...string) (int, error)

DeleteUserItemFeedback deletes a feedback return the user id and item id from MongoDB.

func (*MongoDB) GetClickThroughRate added in v0.2.1

func (db *MongoDB) GetClickThroughRate(date time.Time, positiveTypes []string, readType string) (float64, error)

GetClickThroughRate computes the click-through-rate of a specified date.

func (*MongoDB) GetFeedback

func (db *MongoDB) GetFeedback(cursor string, n int, timeLimit *time.Time, feedbackTypes ...string) (string, []Feedback, error)

GetFeedback returns multiple feedback from MongoDB.

func (*MongoDB) GetFeedbackStream added in v0.2.6

func (db *MongoDB) GetFeedbackStream(batchSize int, timeLimit *time.Time, feedbackTypes ...string) (chan []Feedback, chan error)

GetFeedbackStream reads feedback from MongoDB by stream.

func (*MongoDB) GetItem

func (db *MongoDB) GetItem(itemId string) (item Item, err error)

GetItem returns a item from MongoDB.

func (*MongoDB) GetItemFeedback

func (db *MongoDB) GetItemFeedback(itemId string, feedbackTypes ...string) ([]Feedback, error)

GetItemFeedback returns feedback of a item from MongoDB.

func (*MongoDB) GetItemStream added in v0.2.6

func (db *MongoDB) GetItemStream(batchSize int, timeLimit *time.Time) (chan []Item, chan error)

GetItemStream read items from MongoDB by stream.

func (*MongoDB) GetItems

func (db *MongoDB) GetItems(cursor string, n int, timeLimit *time.Time) (string, []Item, error)

GetItems returns items from MongoDB.

func (*MongoDB) GetMeasurements

func (db *MongoDB) GetMeasurements(name string, n int) ([]Measurement, error)

GetMeasurements get recent measurements from MongoDB.

func (*MongoDB) GetUser

func (db *MongoDB) GetUser(userId string) (user User, err error)

GetUser returns a user from MongoDB.

func (*MongoDB) GetUserFeedback

func (db *MongoDB) GetUserFeedback(userId string, feedbackTypes ...string) ([]Feedback, error)

GetUserFeedback returns feedback of a user from MongoDB.

func (*MongoDB) GetUserItemFeedback

func (db *MongoDB) GetUserItemFeedback(userId, itemId string, feedbackTypes ...string) ([]Feedback, error)

GetUserItemFeedback returns a feedback return the user id and item id from MongoDB.

func (*MongoDB) GetUserStream added in v0.2.6

func (db *MongoDB) GetUserStream(batchSize int) (chan []User, chan error)

GetUserStream reads users from MongoDB by stream.

func (*MongoDB) GetUsers

func (db *MongoDB) GetUsers(cursor string, n int) (string, []User, error)

GetUsers returns users from MongoDB.

func (*MongoDB) Init

func (db *MongoDB) Init() error

Init collections and indices in MongoDB.

func (*MongoDB) InsertMeasurement

func (db *MongoDB) InsertMeasurement(measurement Measurement) error

InsertMeasurement insert a measurement into MongoDB.

func (*MongoDB) Optimize added in v0.2.4

func (db *MongoDB) Optimize() error

Optimize is used by ClickHouse only.

type NoDatabase

type NoDatabase struct{}

NoDatabase means that no database used.

func (NoDatabase) BatchInsertFeedback

func (NoDatabase) BatchInsertFeedback(_ []Feedback, _, _ bool) error

BatchInsertFeedback method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) BatchInsertItems added in v0.2.6

func (NoDatabase) BatchInsertItems(_ []Item) error

BatchInsertItems method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) BatchInsertUsers added in v0.2.6

func (NoDatabase) BatchInsertUsers(_ []User) error

BatchInsertUsers method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) Close

func (NoDatabase) Close() error

Close method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) DeleteItem

func (NoDatabase) DeleteItem(_ string) error

DeleteItem method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) DeleteUser

func (NoDatabase) DeleteUser(_ string) error

DeleteUser method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) DeleteUserItemFeedback

func (NoDatabase) DeleteUserItemFeedback(_, _ string, _ ...string) (int, error)

DeleteUserItemFeedback method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) GetClickThroughRate added in v0.2.1

func (NoDatabase) GetClickThroughRate(_ time.Time, _ []string, _ string) (float64, error)

GetClickThroughRate method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) GetFeedback

func (NoDatabase) GetFeedback(_ string, _ int, _ *time.Time, _ ...string) (string, []Feedback, error)

GetFeedback method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) GetFeedbackStream added in v0.2.6

func (NoDatabase) GetFeedbackStream(_ int, _ *time.Time, _ ...string) (chan []Feedback, chan error)

GetFeedbackStream method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) GetItem

func (NoDatabase) GetItem(_ string) (Item, error)

GetItem method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) GetItemFeedback

func (NoDatabase) GetItemFeedback(_ string, _ ...string) ([]Feedback, error)

GetItemFeedback method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) GetItemStream added in v0.2.6

func (NoDatabase) GetItemStream(_ int, _ *time.Time) (chan []Item, chan error)

GetItemStream method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) GetItems

func (NoDatabase) GetItems(_ string, _ int, _ *time.Time) (string, []Item, error)

GetItems method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) GetMeasurements

func (NoDatabase) GetMeasurements(_ string, _ int) ([]Measurement, error)

GetMeasurements method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) GetUser

func (NoDatabase) GetUser(_ string) (User, error)

GetUser method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) GetUserFeedback

func (NoDatabase) GetUserFeedback(_ string, _ ...string) ([]Feedback, error)

GetUserFeedback method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) GetUserItemFeedback

func (NoDatabase) GetUserItemFeedback(_, _ string, _ ...string) ([]Feedback, error)

GetUserItemFeedback method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) GetUserStream added in v0.2.6

func (NoDatabase) GetUserStream(_ int) (chan []User, chan error)

GetUserStream method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) GetUsers

func (NoDatabase) GetUsers(_ string, _ int) (string, []User, error)

GetUsers method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) Init

func (NoDatabase) Init() error

Init method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) InsertMeasurement

func (NoDatabase) InsertMeasurement(_ Measurement) error

InsertMeasurement method of NoDatabase returns ErrNoDatabase.

func (NoDatabase) Optimize added in v0.2.4

func (NoDatabase) Optimize() error

Optimize is used by ClickHouse only.

type Redis

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

Redis use Redis as data storage, but used for test only.

func (*Redis) BatchInsertFeedback

func (r *Redis) BatchInsertFeedback(feedback []Feedback, insertUser, insertItem bool) error

BatchInsertFeedback insert a batch feedback into Redis. If insertUser set, new users will be insert to user table. If insertItem set, new items will be insert to item table.

func (*Redis) BatchInsertItems added in v0.2.6

func (r *Redis) BatchInsertItems(items []Item) error

BatchInsertItems inserts a batch of items into Redis.

func (*Redis) BatchInsertUsers added in v0.2.6

func (r *Redis) BatchInsertUsers(users []User) error

BatchInsertUsers inserts a batch pf user into Redis.

func (*Redis) Close

func (r *Redis) Close() error

Close Redis connection.

func (*Redis) DeleteItem

func (r *Redis) DeleteItem(itemId string) error

DeleteItem deletes a item from Redis.

func (*Redis) DeleteUser

func (r *Redis) DeleteUser(userId string) error

DeleteUser deletes a user from Redis.

func (*Redis) DeleteUserItemFeedback

func (r *Redis) DeleteUserItemFeedback(userId, itemId string, feedbackTypes ...string) (int, error)

DeleteUserItemFeedback deletes a feedback by user id and item id from Redis.

func (*Redis) ForFeedback

func (r *Redis) ForFeedback(ctx context.Context, action func(key, thisFeedbackType, thisUserId, thisItemId string) error) error

func (*Redis) GetClickThroughRate added in v0.2.1

func (r *Redis) GetClickThroughRate(_ time.Time, _ []string, _ string) (float64, error)

GetClickThroughRate method of Redis returns ErrUnsupported.

func (*Redis) GetFeedback

func (r *Redis) GetFeedback(_ string, _ int, timeLimit *time.Time, feedbackTypes ...string) (string, []Feedback, error)

GetFeedback returns feedback from Redis.

func (*Redis) GetFeedbackStream added in v0.2.6

func (r *Redis) GetFeedbackStream(batchSize int, timeLimit *time.Time, feedbackTypes ...string) (chan []Feedback, chan error)

GetFeedbackStream reads feedback by stream.

func (*Redis) GetItem

func (r *Redis) GetItem(itemId string) (Item, error)

GetItem get a item from Redis.

func (*Redis) GetItemFeedback

func (r *Redis) GetItemFeedback(itemId string, feedbackTypes ...string) ([]Feedback, error)

GetItemFeedback returns feedback of an item from Redis.

func (*Redis) GetItemStream added in v0.2.6

func (r *Redis) GetItemStream(batchSize int, timeLimit *time.Time) (chan []Item, chan error)

GetItemStream read items from Redis by stream.

func (*Redis) GetItems

func (r *Redis) GetItems(cursor string, n int, timeLimit *time.Time) (string, []Item, error)

GetItems returns items from Redis.

func (*Redis) GetMeasurements

func (r *Redis) GetMeasurements(name string, n int) ([]Measurement, error)

GetMeasurements returns recent measurements from Redis.

func (*Redis) GetUser

func (r *Redis) GetUser(userId string) (User, error)

GetUser returns a user from Redis.

func (*Redis) GetUserFeedback

func (r *Redis) GetUserFeedback(userId string, feedbackTypes ...string) ([]Feedback, error)

GetUserFeedback returns feedback of a user from Redis.

func (*Redis) GetUserItemFeedback

func (r *Redis) GetUserItemFeedback(userId, itemId string, feedbackTypes ...string) ([]Feedback, error)

GetUserItemFeedback gets a feedback by user id and item id from Redis.

func (*Redis) GetUserStream added in v0.2.6

func (r *Redis) GetUserStream(batchSize int) (chan []User, chan error)

GetUserStream read users from Redis by stream.

func (*Redis) GetUsers

func (r *Redis) GetUsers(cursor string, n int) (string, []User, error)

GetUsers returns users from Redis.

func (*Redis) Init

func (r *Redis) Init() error

Init does nothing.

func (*Redis) InsertMeasurement

func (r *Redis) InsertMeasurement(measurement Measurement) error

InsertMeasurement insert a measurement into Redis.

func (*Redis) Optimize added in v0.2.4

func (r *Redis) Optimize() error

Optimize is used by ClickHouse only.

type SQLDatabase

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

SQLDatabase use MySQL as data storage.

func (*SQLDatabase) BatchInsertFeedback

func (d *SQLDatabase) BatchInsertFeedback(feedback []Feedback, insertUser, insertItem bool) error

BatchInsertFeedback insert a batch feedback into MySQL. If insertUser set, new users will be insert to user table. If insertItem set, new items will be insert to item table.

func (*SQLDatabase) BatchInsertItems added in v0.2.6

func (d *SQLDatabase) BatchInsertItems(items []Item) error

BatchInsertItems inserts a batch of items into MySQL.

func (*SQLDatabase) BatchInsertUsers added in v0.2.6

func (d *SQLDatabase) BatchInsertUsers(users []User) error

BatchInsertUsers inserts users into MySQL.

func (*SQLDatabase) Close

func (d *SQLDatabase) Close() error

Close MySQL connection.

func (*SQLDatabase) DeleteItem

func (d *SQLDatabase) DeleteItem(itemId string) error

DeleteItem deletes a item from MySQL.

func (*SQLDatabase) DeleteUser

func (d *SQLDatabase) DeleteUser(userId string) error

DeleteUser deletes a user from MySQL.

func (*SQLDatabase) DeleteUserItemFeedback

func (d *SQLDatabase) DeleteUserItemFeedback(userId, itemId string, feedbackTypes ...string) (int, error)

DeleteUserItemFeedback deletes a feedback by user id and item id from MySQL.

func (*SQLDatabase) GetClickThroughRate added in v0.2.1

func (d *SQLDatabase) GetClickThroughRate(date time.Time, positiveTypes []string, readType string) (float64, error)

GetClickThroughRate computes the click-through-rate of a specified date.

func (*SQLDatabase) GetFeedback

func (d *SQLDatabase) GetFeedback(cursor string, n int, timeLimit *time.Time, feedbackTypes ...string) (string, []Feedback, error)

GetFeedback returns feedback from MySQL.

func (*SQLDatabase) GetFeedbackStream added in v0.2.6

func (d *SQLDatabase) GetFeedbackStream(batchSize int, timeLimit *time.Time, feedbackTypes ...string) (chan []Feedback, chan error)

GetFeedbackStream reads feedback by stream.

func (*SQLDatabase) GetItem

func (d *SQLDatabase) GetItem(itemId string) (Item, error)

GetItem get a item from MySQL.

func (*SQLDatabase) GetItemFeedback

func (d *SQLDatabase) GetItemFeedback(itemId string, feedbackTypes ...string) ([]Feedback, error)

GetItemFeedback returns feedback of a item from MySQL.

func (*SQLDatabase) GetItemStream added in v0.2.6

func (d *SQLDatabase) GetItemStream(batchSize int, timeLimit *time.Time) (chan []Item, chan error)

GetItemStream reads items by stream.

func (*SQLDatabase) GetItems

func (d *SQLDatabase) GetItems(cursor string, n int, timeLimit *time.Time) (string, []Item, error)

GetItems returns items from MySQL.

func (*SQLDatabase) GetMeasurements

func (d *SQLDatabase) GetMeasurements(name string, n int) ([]Measurement, error)

GetMeasurements returns recent measurements from MySQL.

func (*SQLDatabase) GetUser

func (d *SQLDatabase) GetUser(userId string) (User, error)

GetUser returns a user from MySQL.

func (*SQLDatabase) GetUserFeedback

func (d *SQLDatabase) GetUserFeedback(userId string, feedbackTypes ...string) ([]Feedback, error)

GetUserFeedback returns feedback of a user from MySQL.

func (*SQLDatabase) GetUserItemFeedback

func (d *SQLDatabase) GetUserItemFeedback(userId, itemId string, feedbackTypes ...string) ([]Feedback, error)

GetUserItemFeedback gets a feedback by user id and item id from MySQL.

func (*SQLDatabase) GetUserStream added in v0.2.6

func (d *SQLDatabase) GetUserStream(batchSize int) (chan []User, chan error)

GetUserStream read users by stream.

func (*SQLDatabase) GetUsers

func (d *SQLDatabase) GetUsers(cursor string, n int) (string, []User, error)

GetUsers returns users from MySQL.

func (*SQLDatabase) Init

func (d *SQLDatabase) Init() error

Init tables and indices in MySQL.

func (*SQLDatabase) InsertMeasurement

func (d *SQLDatabase) InsertMeasurement(measurement Measurement) error

InsertMeasurement insert a measurement into MySQL.

func (*SQLDatabase) Optimize added in v0.2.4

func (d *SQLDatabase) Optimize() error

Optimize is used by ClickHouse only.

type SQLDriver added in v0.2.4

type SQLDriver int
const (
	MySQL SQLDriver = iota
	Postgres
	ClickHouse
)

type User

type User struct {
	UserId    string
	Labels    []string
	Subscribe []string
	Comment   string
}

User stores meta data about user.

Jump to

Keyboard shortcuts

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