storage

package
v0.0.0-...-c2e572c Latest Latest
Warning

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

Go to latest
Published: Apr 1, 2024 License: GPL-3.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const (
	SettingInactiveName               = `inactive_settings`
	SettingRefreshInterval            = `refresh_interval`
	SettingInactiveHeadline           = `The ticker is currently inactive.`
	SettingInactiveSubHeadline        = `Please contact us if you want to use it.`
	SettingInactiveDescription        = `...`
	SettingInactiveAuthor             = `systemli.org Ticker Team`
	SettingInactiveEmail              = `admin@systemli.org`
	SettingInactiveHomepage           = `https://www.systemli.org/`
	SettingInactiveTwitter            = `systemli`
	SettingDefaultRefreshInterval int = 10000
)

Variables

This section is empty.

Functions

func MediaURL

func MediaURL(name string, uploadPath string) string

func MigrateDB

func MigrateDB(db *gorm.DB) error

MigrateDB migrates the database

func OpenGormDB

func OpenGormDB(dbType, dsn string, log *logrus.Logger) (*gorm.DB, error)

func WithAttachments

func WithAttachments() func(*gorm.DB) *gorm.DB

WithAttachments is a helper function to preload the attachments association.

func WithPreload

func WithPreload() func(*gorm.DB) *gorm.DB

WithPreload is a helper function to preload all associations.

func WithTickers

func WithTickers() func(*gorm.DB) *gorm.DB

WithTickers is a helper function to preload the tickers association.

Types

type Attachment

type Attachment struct {
	ID          int `gorm:"primaryKey"`
	CreatedAt   time.Time
	UpdatedAt   time.Time
	MessageID   int `gorm:"index"`
	UUID        string
	Extension   string
	ContentType string
}

type InactiveSettings

type InactiveSettings struct {
	Headline    string `json:"headline" binding:"required"`
	SubHeadline string `json:"subHeadline" binding:"required"`
	Description string `json:"description" binding:"required"`
	Author      string `json:"author" binding:"required"`
	Email       string `json:"email" binding:"required"`
	Homepage    string `json:"homepage" binding:"required"`
	Twitter     string `json:"twitter" binding:"required"`
}

func DefaultInactiveSettings

func DefaultInactiveSettings() InactiveSettings

type MastodonMeta

type MastodonMeta struct {
	ID  string
	URI string
	URL string
}

type MastodonUser

type MastodonUser struct {
	Username    string
	DisplayName string
	Avatar      string
}

type Message

type Message struct {
	ID             int `gorm:"primaryKey"`
	CreatedAt      time.Time
	UpdatedAt      time.Time
	TickerID       int `gorm:"index"`
	Text           string
	Attachments    []Attachment
	GeoInformation geojson.FeatureCollection `gorm:"serializer:json"`
	Telegram       TelegramMeta              `gorm:"serializer:json"`
	Mastodon       MastodonMeta              `gorm:"serializer:json"`
}

func NewMessage

func NewMessage() Message

func (*Message) AddAttachment

func (m *Message) AddAttachment(upload Upload)

func (*Message) AddAttachments

func (m *Message) AddAttachments(uploads []Upload)

func (*Message) MastodonURL

func (m *Message) MastodonURL() string

func (*Message) TelegramURL

func (m *Message) TelegramURL() string

type MockStorage

type MockStorage struct {
	mock.Mock
}

MockStorage is an autogenerated mock type for the Storage type

func NewMockStorage

func NewMockStorage(t interface {
	mock.TestingT
	Cleanup(func())
}) *MockStorage

NewMockStorage creates a new instance of MockStorage. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations. The first argument is typically a *testing.T value.

func (*MockStorage) AddTickerUser

func (_m *MockStorage) AddTickerUser(ticker *Ticker, user *User) error

AddTickerUser provides a mock function with given fields: ticker, user

func (*MockStorage) DeleteMessage

func (_m *MockStorage) DeleteMessage(message Message) error

DeleteMessage provides a mock function with given fields: message

func (*MockStorage) DeleteMessages

func (_m *MockStorage) DeleteMessages(ticker Ticker) error

DeleteMessages provides a mock function with given fields: ticker

func (*MockStorage) DeleteTicker

func (_m *MockStorage) DeleteTicker(ticker Ticker) error

DeleteTicker provides a mock function with given fields: ticker

func (*MockStorage) DeleteTickerUser

func (_m *MockStorage) DeleteTickerUser(ticker *Ticker, user *User) error

DeleteTickerUser provides a mock function with given fields: ticker, user

func (*MockStorage) DeleteTickerUsers

func (_m *MockStorage) DeleteTickerUsers(ticker *Ticker) error

DeleteTickerUsers provides a mock function with given fields: ticker

func (*MockStorage) DeleteUpload

func (_m *MockStorage) DeleteUpload(upload Upload) error

DeleteUpload provides a mock function with given fields: upload

func (*MockStorage) DeleteUploads

func (_m *MockStorage) DeleteUploads(uploads []Upload)

DeleteUploads provides a mock function with given fields: uploads

func (*MockStorage) DeleteUploadsByTicker

func (_m *MockStorage) DeleteUploadsByTicker(ticker Ticker) error

DeleteUploadsByTicker provides a mock function with given fields: ticker

func (*MockStorage) DeleteUser

func (_m *MockStorage) DeleteUser(user User) error

DeleteUser provides a mock function with given fields: user

func (*MockStorage) FindMessage

func (_m *MockStorage) FindMessage(tickerID int, messageID int, opts ...func(*gorm.DB) *gorm.DB) (Message, error)

FindMessage provides a mock function with given fields: tickerID, messageID, opts

func (*MockStorage) FindMessagesByTicker

func (_m *MockStorage) FindMessagesByTicker(ticker Ticker, opts ...func(*gorm.DB) *gorm.DB) ([]Message, error)

FindMessagesByTicker provides a mock function with given fields: ticker, opts

func (*MockStorage) FindMessagesByTickerAndPagination

func (_m *MockStorage) FindMessagesByTickerAndPagination(ticker Ticker, _a1 pagination.Pagination, opts ...func(*gorm.DB) *gorm.DB) ([]Message, error)

FindMessagesByTickerAndPagination provides a mock function with given fields: ticker, _a1, opts

func (*MockStorage) FindTickerByDomain

func (_m *MockStorage) FindTickerByDomain(domain string, opts ...func(*gorm.DB) *gorm.DB) (Ticker, error)

FindTickerByDomain provides a mock function with given fields: domain, opts

func (*MockStorage) FindTickerByID

func (_m *MockStorage) FindTickerByID(id int, opts ...func(*gorm.DB) *gorm.DB) (Ticker, error)

FindTickerByID provides a mock function with given fields: id, opts

func (*MockStorage) FindTickerByUserAndID

func (_m *MockStorage) FindTickerByUserAndID(user User, id int, opts ...func(*gorm.DB) *gorm.DB) (Ticker, error)

FindTickerByUserAndID provides a mock function with given fields: user, id, opts

func (*MockStorage) FindTickers

func (_m *MockStorage) FindTickers(opts ...func(*gorm.DB) *gorm.DB) ([]Ticker, error)

FindTickers provides a mock function with given fields: opts

func (*MockStorage) FindTickersByIDs

func (_m *MockStorage) FindTickersByIDs(ids []int, opts ...func(*gorm.DB) *gorm.DB) ([]Ticker, error)

FindTickersByIDs provides a mock function with given fields: ids, opts

func (*MockStorage) FindTickersByUser

func (_m *MockStorage) FindTickersByUser(user User, opts ...func(*gorm.DB) *gorm.DB) ([]Ticker, error)

FindTickersByUser provides a mock function with given fields: user, opts

func (*MockStorage) FindUploadByUUID

func (_m *MockStorage) FindUploadByUUID(uuid string) (Upload, error)

FindUploadByUUID provides a mock function with given fields: uuid

func (*MockStorage) FindUploadsByIDs

func (_m *MockStorage) FindUploadsByIDs(ids []int) ([]Upload, error)

FindUploadsByIDs provides a mock function with given fields: ids

func (*MockStorage) FindUserByEmail

func (_m *MockStorage) FindUserByEmail(email string, opts ...func(*gorm.DB) *gorm.DB) (User, error)

FindUserByEmail provides a mock function with given fields: email, opts

func (*MockStorage) FindUserByID

func (_m *MockStorage) FindUserByID(id int, opts ...func(*gorm.DB) *gorm.DB) (User, error)

FindUserByID provides a mock function with given fields: id, opts

func (*MockStorage) FindUsers

func (_m *MockStorage) FindUsers(opts ...func(*gorm.DB) *gorm.DB) ([]User, error)

FindUsers provides a mock function with given fields: opts

func (*MockStorage) FindUsersByIDs

func (_m *MockStorage) FindUsersByIDs(ids []int, opts ...func(*gorm.DB) *gorm.DB) ([]User, error)

FindUsersByIDs provides a mock function with given fields: ids, opts

func (*MockStorage) FindUsersByTicker

func (_m *MockStorage) FindUsersByTicker(ticker Ticker, opts ...func(*gorm.DB) *gorm.DB) ([]User, error)

FindUsersByTicker provides a mock function with given fields: ticker, opts

func (*MockStorage) GetInactiveSettings

func (_m *MockStorage) GetInactiveSettings() InactiveSettings

GetInactiveSettings provides a mock function with given fields:

func (*MockStorage) GetRefreshIntervalSettings

func (_m *MockStorage) GetRefreshIntervalSettings() RefreshIntervalSettings

GetRefreshIntervalSettings provides a mock function with given fields:

func (*MockStorage) SaveInactiveSettings

func (_m *MockStorage) SaveInactiveSettings(inactiveSettings InactiveSettings) error

SaveInactiveSettings provides a mock function with given fields: inactiveSettings

func (*MockStorage) SaveMessage

func (_m *MockStorage) SaveMessage(message *Message) error

SaveMessage provides a mock function with given fields: message

func (*MockStorage) SaveRefreshIntervalSettings

func (_m *MockStorage) SaveRefreshIntervalSettings(refreshInterval RefreshIntervalSettings) error

SaveRefreshIntervalSettings provides a mock function with given fields: refreshInterval

func (*MockStorage) SaveTicker

func (_m *MockStorage) SaveTicker(ticker *Ticker) error

SaveTicker provides a mock function with given fields: ticker

func (*MockStorage) SaveUpload

func (_m *MockStorage) SaveUpload(upload *Upload) error

SaveUpload provides a mock function with given fields: upload

func (*MockStorage) SaveUser

func (_m *MockStorage) SaveUser(user *User) error

SaveUser provides a mock function with given fields: user

func (*MockStorage) UploadPath

func (_m *MockStorage) UploadPath() string

UploadPath provides a mock function with given fields:

type RefreshIntervalSettings

type RefreshIntervalSettings struct {
	RefreshInterval int `json:"refreshInterval" binding:"required"`
}

func DefaultRefreshIntervalSettings

func DefaultRefreshIntervalSettings() RefreshIntervalSettings

type Setting

type Setting struct {
	ID        int `gorm:"primaryKey"`
	CreatedAt time.Time
	UpdatedAt time.Time
	Name      string `gorm:"unique"`
	Value     string `gorm:"type:json"`
}

type SqlStorage

type SqlStorage struct {
	DB *gorm.DB
	// contains filtered or unexported fields
}

func NewSqlStorage

func NewSqlStorage(db *gorm.DB, uploadPath string) *SqlStorage

func (*SqlStorage) AddTickerUser

func (s *SqlStorage) AddTickerUser(ticker *Ticker, user *User) error

func (*SqlStorage) DeleteMessage

func (s *SqlStorage) DeleteMessage(message Message) error

func (*SqlStorage) DeleteMessages

func (s *SqlStorage) DeleteMessages(ticker Ticker) error

func (*SqlStorage) DeleteTicker

func (s *SqlStorage) DeleteTicker(ticker Ticker) error

func (*SqlStorage) DeleteTickerUser

func (s *SqlStorage) DeleteTickerUser(ticker *Ticker, user *User) error

func (*SqlStorage) DeleteTickerUsers

func (s *SqlStorage) DeleteTickerUsers(ticker *Ticker) error

func (*SqlStorage) DeleteUpload

func (s *SqlStorage) DeleteUpload(upload Upload) error

func (*SqlStorage) DeleteUploads

func (s *SqlStorage) DeleteUploads(uploads []Upload)

func (*SqlStorage) DeleteUploadsByTicker

func (s *SqlStorage) DeleteUploadsByTicker(ticker Ticker) error

func (*SqlStorage) DeleteUser

func (s *SqlStorage) DeleteUser(user User) error

func (*SqlStorage) FindMessage

func (s *SqlStorage) FindMessage(tickerID, messageID int, opts ...func(*gorm.DB) *gorm.DB) (Message, error)

func (*SqlStorage) FindMessagesByTicker

func (s *SqlStorage) FindMessagesByTicker(ticker Ticker, opts ...func(*gorm.DB) *gorm.DB) ([]Message, error)

func (*SqlStorage) FindMessagesByTickerAndPagination

func (s *SqlStorage) FindMessagesByTickerAndPagination(ticker Ticker, pagination pagination.Pagination, opts ...func(*gorm.DB) *gorm.DB) ([]Message, error)

func (*SqlStorage) FindTickerByDomain

func (s *SqlStorage) FindTickerByDomain(domain string, opts ...func(*gorm.DB) *gorm.DB) (Ticker, error)

func (*SqlStorage) FindTickerByID

func (s *SqlStorage) FindTickerByID(id int, opts ...func(*gorm.DB) *gorm.DB) (Ticker, error)

func (*SqlStorage) FindTickerByUserAndID

func (s *SqlStorage) FindTickerByUserAndID(user User, id int, opts ...func(*gorm.DB) *gorm.DB) (Ticker, error)

func (*SqlStorage) FindTickers

func (s *SqlStorage) FindTickers(opts ...func(*gorm.DB) *gorm.DB) ([]Ticker, error)

func (*SqlStorage) FindTickersByIDs

func (s *SqlStorage) FindTickersByIDs(ids []int, opts ...func(*gorm.DB) *gorm.DB) ([]Ticker, error)

func (*SqlStorage) FindTickersByUser

func (s *SqlStorage) FindTickersByUser(user User, opts ...func(*gorm.DB) *gorm.DB) ([]Ticker, error)

func (*SqlStorage) FindUploadByUUID

func (s *SqlStorage) FindUploadByUUID(uuid string) (Upload, error)

func (*SqlStorage) FindUploadsByIDs

func (s *SqlStorage) FindUploadsByIDs(ids []int) ([]Upload, error)

func (*SqlStorage) FindUserByEmail

func (s *SqlStorage) FindUserByEmail(email string, opts ...func(*gorm.DB) *gorm.DB) (User, error)

func (*SqlStorage) FindUserByID

func (s *SqlStorage) FindUserByID(id int, opts ...func(*gorm.DB) *gorm.DB) (User, error)

func (*SqlStorage) FindUsers

func (s *SqlStorage) FindUsers(opts ...func(*gorm.DB) *gorm.DB) ([]User, error)

func (*SqlStorage) FindUsersByIDs

func (s *SqlStorage) FindUsersByIDs(ids []int, opts ...func(*gorm.DB) *gorm.DB) ([]User, error)

func (*SqlStorage) FindUsersByTicker

func (s *SqlStorage) FindUsersByTicker(ticker Ticker, opts ...func(*gorm.DB) *gorm.DB) ([]User, error)

func (*SqlStorage) GetInactiveSettings

func (s *SqlStorage) GetInactiveSettings() InactiveSettings

func (*SqlStorage) GetRefreshIntervalSettings

func (s *SqlStorage) GetRefreshIntervalSettings() RefreshIntervalSettings

func (*SqlStorage) SaveInactiveSettings

func (s *SqlStorage) SaveInactiveSettings(inactiveSettings InactiveSettings) error

func (*SqlStorage) SaveMessage

func (s *SqlStorage) SaveMessage(message *Message) error

func (*SqlStorage) SaveRefreshIntervalSettings

func (s *SqlStorage) SaveRefreshIntervalSettings(refreshInterval RefreshIntervalSettings) error

func (*SqlStorage) SaveTicker

func (s *SqlStorage) SaveTicker(ticker *Ticker) error

func (*SqlStorage) SaveUpload

func (s *SqlStorage) SaveUpload(upload *Upload) error

func (*SqlStorage) SaveUser

func (s *SqlStorage) SaveUser(user *User) error

func (*SqlStorage) UploadPath

func (s *SqlStorage) UploadPath() string

type Storage

type Storage interface {
	FindUsers(opts ...func(*gorm.DB) *gorm.DB) ([]User, error)
	FindUserByID(id int, opts ...func(*gorm.DB) *gorm.DB) (User, error)
	FindUsersByIDs(ids []int, opts ...func(*gorm.DB) *gorm.DB) ([]User, error)
	FindUserByEmail(email string, opts ...func(*gorm.DB) *gorm.DB) (User, error)
	FindUsersByTicker(ticker Ticker, opts ...func(*gorm.DB) *gorm.DB) ([]User, error)
	SaveUser(user *User) error
	DeleteUser(user User) error
	DeleteTickerUsers(ticker *Ticker) error
	DeleteTickerUser(ticker *Ticker, user *User) error
	AddTickerUser(ticker *Ticker, user *User) error
	FindTickers(opts ...func(*gorm.DB) *gorm.DB) ([]Ticker, error)
	FindTickersByUser(user User, opts ...func(*gorm.DB) *gorm.DB) ([]Ticker, error)
	FindTickerByUserAndID(user User, id int, opts ...func(*gorm.DB) *gorm.DB) (Ticker, error)
	FindTickersByIDs(ids []int, opts ...func(*gorm.DB) *gorm.DB) ([]Ticker, error)
	FindTickerByDomain(domain string, opts ...func(*gorm.DB) *gorm.DB) (Ticker, error)
	FindTickerByID(id int, opts ...func(*gorm.DB) *gorm.DB) (Ticker, error)
	SaveTicker(ticker *Ticker) error
	DeleteTicker(ticker Ticker) error
	SaveUpload(upload *Upload) error
	FindUploadByUUID(uuid string) (Upload, error)
	FindUploadsByIDs(ids []int) ([]Upload, error)
	DeleteUpload(upload Upload) error
	DeleteUploads(uploads []Upload)
	DeleteUploadsByTicker(ticker Ticker) error
	FindMessage(tickerID, messageID int, opts ...func(*gorm.DB) *gorm.DB) (Message, error)
	FindMessagesByTicker(ticker Ticker, opts ...func(*gorm.DB) *gorm.DB) ([]Message, error)
	FindMessagesByTickerAndPagination(ticker Ticker, pagination pagination.Pagination, opts ...func(*gorm.DB) *gorm.DB) ([]Message, error)
	SaveMessage(message *Message) error
	DeleteMessage(message Message) error
	DeleteMessages(ticker Ticker) error
	GetInactiveSettings() InactiveSettings
	GetRefreshIntervalSettings() RefreshIntervalSettings
	SaveInactiveSettings(inactiveSettings InactiveSettings) error
	SaveRefreshIntervalSettings(refreshInterval RefreshIntervalSettings) error
	UploadPath() string
}

type TelegramMeta

type TelegramMeta struct {
	Messages []tgbotapi.Message
}

type Ticker

type Ticker struct {
	ID          int `gorm:"primaryKey"`
	CreatedAt   time.Time
	UpdatedAt   time.Time
	Domain      string `gorm:"unique,index"`
	Title       string
	Description string
	Active      bool
	Information TickerInformation `gorm:"embedded"`
	Location    TickerLocation    `gorm:"embedded"`
	Telegram    TickerTelegram
	Mastodon    TickerMastodon
	Users       []User `gorm:"many2many:ticker_users;"`
}

func NewTicker

func NewTicker() Ticker

func (*Ticker) Reset

func (t *Ticker) Reset()

type TickerInformation

type TickerInformation struct {
	Author   string
	URL      string
	Email    string
	Twitter  string
	Facebook string
	Telegram string
	Mastodon string
	Bluesky  string
}

type TickerLocation

type TickerLocation struct {
	Lat float64
	Lon float64
}

type TickerMastodon

type TickerMastodon struct {
	ID          int `gorm:"primaryKey"`
	CreatedAt   time.Time
	UpdatedAt   time.Time
	TickerID    int `gorm:"index"`
	Active      bool
	Server      string
	Token       string
	Secret      string
	AccessToken string
	User        MastodonUser `gorm:"embedded"`
}

func (*TickerMastodon) Connected

func (m *TickerMastodon) Connected() bool

func (*TickerMastodon) Reset

func (m *TickerMastodon) Reset()

type TickerTelegram

type TickerTelegram struct {
	ID          int `gorm:"primaryKey"`
	CreatedAt   time.Time
	UpdatedAt   time.Time
	TickerID    int `gorm:"index"`
	Active      bool
	ChannelName string
}

func (*TickerTelegram) Connected

func (tg *TickerTelegram) Connected() bool

func (*TickerTelegram) Reset

func (tg *TickerTelegram) Reset()

type Upload

type Upload struct {
	ID          int `gorm:"primaryKey"`
	CreatedAt   time.Time
	UpdatedAt   time.Time
	UUID        string `gorm:"index;unique"`
	TickerID    int    `gorm:"index"`
	Path        string
	Extension   string
	ContentType string
}

func NewUpload

func NewUpload(filename, contentType string, tickerID int) Upload

func (*Upload) FileName

func (u *Upload) FileName() string

func (*Upload) FullPath

func (u *Upload) FullPath(uploadPath string) string

func (*Upload) URL

func (u *Upload) URL(uploadPath string) string

type User

type User struct {
	ID                int `gorm:"primaryKey"`
	CreatedAt         time.Time
	UpdatedAt         time.Time
	Email             string `gorm:"uniqueIndex;not null"`
	EncryptedPassword string
	IsSuperAdmin      bool
	Tickers           []Ticker `gorm:"many2many:ticker_users;"`
}

func NewUser

func NewUser(email, password string) (User, error)

func (*User) Authenticate

func (u *User) Authenticate(password string) bool

func (*User) UpdatePassword

func (u *User) UpdatePassword(password string)

Jump to

Keyboard shortcuts

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