storage

package
v0.9.1 Latest Latest
Warning

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

Go to latest
Published: May 27, 2025 License: MIT Imports: 15 Imported by: 0

Documentation

Overview

Package storage handles storage for the bulletin system.

Much of this code is generated by github.com/sqlc-dev/sqlc.

Transactions with Queries

This is from the sqlc docs, but it's a simple example of how to use transactions with Queries functions.

func bumpCounter(ctx context.Context, db *sql.DB, queries *tutorial.Queries, id int32) error {
	tx, err := db.Begin()
	if err != nil {
		return err
	}
	defer tx.Rollback()
	qtx := queries.WithTx(tx)
	r, err := qtx.GetRecord(ctx, id)
	if err != nil {
		return err
	}
	if err := qtx.UpdateRecord(ctx, tutorial.UpdateRecordParams{
		ID:      r.ID,
		Counter: r.Counter + 1,
	}); err != nil {
		return err
	}
	return tx.Commit()
}

Index

Constants

View Source
const (
	AlertDoNotCare int64 = iota
	AlertNone
	AlertBrief
	AlertReadNew
	AlertShowNew
	AlertBriefPerm
	AlertReadNewPerm
	AlertShowNewPerm
)

Alert values.

Variables

This section is empty.

Functions

func AlertString

func AlertString(alert int64) string

AlertString translates an alert number to a string.

func Context

func Context() context.Context

Context the standard context for storage calls.

func EffectiveAlert

func EffectiveAlert(user, folder int64) int64

EffectiveAlert returns the effective alert from a user and folder alert level.

func FolderAlertString

func FolderAlertString(alert int64) string

FolderAlertString translates an alert number to a string.

func InitialiseSkewChecker

func InitialiseSkewChecker(db *sqlx.DB, m *migrate.Migrate)

InitialiseSkewChecker creates an object to track skew.

func Open

func Open() (*sqlx.DB, error)

Open opens the bulletin database.

Types

type AddUserParams

type AddUserParams struct {
	Login    string
	Name     string
	Admin    int64
	Disabled int64
}

type Broadcast

type Broadcast struct {
	Author   string
	Bell     int64
	Message  string
	CreateAt time.Time
}

func (Broadcast) String

func (b Broadcast) String() string

String displays a folder (mainly used for debugging).

type CreateFolderParams

type CreateFolderParams struct {
	Name        string
	Always      int64
	Alert       int64
	Description string
	Owner       string
	System      int64
	Expire      int64
	Visibility  int64
}

type CreateMessageParams

type CreateMessageParams struct {
	Folder     string
	Author     string
	Subject    string
	Message    string
	Permanent  int64
	Shutdown   int64
	Expiration time.Time
}

type DBTX

type DBTX interface {
	ExecContext(context.Context, string, ...interface{}) (sql.Result, error)
	PrepareContext(context.Context, string) (*sql.Stmt, error)
	QueryContext(context.Context, string, ...interface{}) (*sql.Rows, error)
	QueryRowContext(context.Context, string, ...interface{}) *sql.Row
}

type Folder

type Folder struct {
	Name        string
	Always      int64
	Alert       int64
	Description string
	Owner       string
	System      int64
	Expire      int64
	Visibility  int64
	CreateAt    time.Time
	UpdateAt    time.Time
}

func (Folder) String

func (f Folder) String() string

String displays a folder (mainly used for debugging).

type FolderAccess

type FolderAccess struct {
	Login      string
	Folder     string
	Visibility int64
}

type FolderConfig

type FolderConfig struct {
	Login  string
	Folder string
	Always int64
	Alert  int64
}

type GetAlertMessagesRow

type GetAlertMessagesRow struct {
	FolderAlert int64
	UserAlert   int64
	Message     Message
}

type GetExpireRow

type GetExpireRow struct {
	DefaultExpire int64
	ExpireLimit   int64
}

type GetLastLoginByEnabledRow

type GetLastLoginByEnabledRow struct {
	Login     string
	LastLogin time.Time
}

type GetLastLoginByLoginRow

type GetLastLoginByLoginRow struct {
	Login     string
	LastLogin time.Time
}

type GetLastLoginRow

type GetLastLoginRow struct {
	Login     string
	LastLogin time.Time
}

type GetLastReadByEnabledRow

type GetLastReadByEnabledRow struct {
	ID     int64
	Author string
}

type GetLastReadByUserRow

type GetLastReadByUserRow struct {
	ID     int64
	Author string
}

type GetLastReadRow

type GetLastReadRow struct {
	ID     int64
	Author string
}

type ListFolderRow

type ListFolderRow struct {
	Name        string
	Count       int64
	Description string
}

type Mark

type Mark struct {
	Login  string
	Folder string
	Msgid  int64
}

type Message

type Message struct {
	ID         int64
	Folder     string
	Author     string
	Subject    string
	Message    string
	Permanent  int64
	System     int64
	Shutdown   int64
	Expiration time.Time
	CreateAt   time.Time
	UpdateAt   time.Time
}

func (*Message) AlertLine

func (m *Message) AlertLine() string

AlertLine renders a message in a line for a SHOWNEW setting.

func (*Message) OneLine

func (m *Message) OneLine(expire bool) string

OneLine renders a message in a line.

func (*Message) String

func (m *Message) String() string

String renders a message.

type Queries

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

func New

func New(db DBTX) *Queries

func (*Queries) AddMark

func (q *Queries) AddMark(ctx context.Context, folder string, login string, msgid int64) error

AddMark mark a message id for a login in a folder.

INSERT INTO marks (folder, login, msgid) VALUES (?, ?, ?)

func (*Queries) AddUser

func (q *Queries) AddUser(ctx context.Context, arg AddUserParams) (User, error)

AddUser adds the user.

INSERT INTO users
    (login, name, admin, disabled, last_activity, last_login)
  VALUES
    (?, ?, ?, ?, '1970-01-01', '1970-01-01')
RETURNING login, name, admin, moderator, disabled, prompt, signature, last_activity, last_login, create_at, update_at

func (*Queries) CreateBroadcast

func (q *Queries) CreateBroadcast(ctx context.Context, author string, bell int64, message string) error

CreateBroadcast adds a new broadcast message.

INSERT INTO broadcast
    (author, bell, message)
  VALUES
    (?, ?, ?)

func (*Queries) CreateFolder

func (q *Queries) CreateFolder(ctx context.Context, arg CreateFolderParams) error

CreateFolder creates a new folder.

INSERT INTO folders
    (name, always, alert, description, owner, system, expire, visibility)
  VALUES
    (?, ?, ?, ?, ?, ?, ?, ?)

func (*Queries) CreateMessage

func (q *Queries) CreateMessage(ctx context.Context, arg CreateMessageParams) error

CreateMessage creates a new message.

INSERT INTO messages (
  id, folder, author, subject, message, permanent, shutdown, expiration
) VALUES (
  (SELECT COALESCE(MAX(id), 0) + 1 FROM messages AS m WHERE m.folder = ?1),
  ?1, ?2, ?3, ?4, ?5, ?6, ?7)

func (*Queries) DeleteAllExpiredMessages

func (q *Queries) DeleteAllExpiredMessages(ctx context.Context) (int64, error)

DeleteAllExpiredMessages deletes all messages that are not permanent and have an expiration timestamp less than the `CURRENT_TIMESTAMP`. This works on all folders.

DELETE FROM messages
WHERE permanent != 1 AND expiration < CURRENT_TIMESTAMP

func (*Queries) DeleteAllMessages

func (q *Queries) DeleteAllMessages(ctx context.Context, folder string) error

DeleteAllMessages delete all messages in a folder.

DELETE FROM messages WHERE folder = ?

func (*Queries) DeleteAllShutdownMessages

func (q *Queries) DeleteAllShutdownMessages(ctx context.Context) (int64, error)

DeleteAllShutdownMessages removes all shutdown that are not permanent. This works on all folders.

DELETE FROM messages
WHERE permanent != 1 AND shutdown > 0

func (*Queries) DeleteFolder

func (q *Queries) DeleteFolder(ctx context.Context, name string) error

DeleteFolder remove a folder by name.

DELETE FROM folders WHERE name = ?

func (*Queries) DeleteFolderAccess

func (q *Queries) DeleteFolderAccess(ctx context.Context, login string, folder string) error

DeleteFolderAccess remove access for a folder for a given login.

DELETE FROM folder_access WHERE login = ? AND folder = ?

func (*Queries) DeleteMark

func (q *Queries) DeleteMark(ctx context.Context, folder string, login string, msgid int64) error

DeleteMark unmark a message id for a login in a folder.

DELETE FROM marks WHERE folder = ? AND login = ? AND msgid = ?

func (*Queries) DeleteMessage

func (q *Queries) DeleteMessage(ctx context.Context, iD int64, folder string) error

DeleteMessage removes a message by id and by folder.

DELETE FROM messages WHERE id = ? AND folder = ?

func (*Queries) DeleteUser

func (q *Queries) DeleteUser(ctx context.Context, login string) error

DeleteUser removes the user (as long as the user isn't SYSTEM).

DELETE FROM users WHERE login = ? AND login != 'SYSTEM'

func (*Queries) FindFolderExact

func (q *Queries) FindFolderExact(ctx context.Context, name string) (Folder, error)

FindFolderExact finds a folder with an exact match.

SELECT name, "always", alert, description, owner, system, expire, visibility, create_at, update_at FROM folders where name = ?

func (*Queries) FindFolderPrefix

func (q *Queries) FindFolderPrefix(ctx context.Context, name sql.NullString) (Folder, error)

FindFolderPrefix finds a folder based on a prefix.

SELECT name, "always", alert, description, owner, system, expire, visibility, create_at, update_at FROM folders where name LIKE ?1 || '%'
ORDER BY name
LIMIT 1

func (*Queries) GetAlertMessages

func (q *Queries) GetAlertMessages(ctx context.Context, login string, createAt time.Time) ([]GetAlertMessagesRow, error)

GetAlertMessages get all alert messages for a user older than a certain date that are brief, readnew, or shownew.

SELECT CAST(f.alert AS INT) AS folder_alert,
       CAST(COALESCE(fc.alert, 0) AS INT) AS user_alert,
       m.id, m.folder, m.author, m.subject, m.message, m.permanent, m.system, m.shutdown, m.expiration, m.create_at, m.update_at
  FROM messages AS m
  LEFT OUTER JOIN folders AS f ON m.folder = f.name
  LEFT OUTER JOIN folder_configs AS fc ON f.name = fc.folder AND fc.login = ?
  WHERE m.create_at >= ?
    AND (f.alert > 4 OR fc.alert > 1
         OR (f.alert > 1 AND COALESCE(fc.alert, 0) != 1))
  ORDER BY m.folder, m.id

func (*Queries) GetBroadcasts

func (q *Queries) GetBroadcasts(ctx context.Context, createAt time.Time) ([]Broadcast, error)

GetBroadcasts gets new broadcast messages newer than a passed time.Time() value and returns them in create_at order.

SELECT author, bell, message, create_at FROM broadcast WHERE create_at > ? ORDER BY create_at

func (*Queries) GetExpire

func (q *Queries) GetExpire(ctx context.Context) (GetExpireRow, error)

GetExpire get the default expiration value and limit for the system.

SELECT default_expire, expire_limit FROM system WHERE rowid = 1

func (*Queries) GetFolder

func (q *Queries) GetFolder(ctx context.Context, name string) (Folder, error)

GetFolder get a folder by name.

SELECT name, "always", alert, description, owner, system, expire, visibility, create_at, update_at FROM folders WHERE name = ?

func (*Queries) GetFolderExpire

func (q *Queries) GetFolderExpire(ctx context.Context, name string) (int64, error)

GetFolderExpire gets the default expiration (in days) for a folder.

SELECT expire FROM folders WHERE name = ?

func (*Queries) GetLastLogin

func (q *Queries) GetLastLogin(ctx context.Context) ([]GetLastLoginRow, error)

GetLastLogin gets the login and last_login time for all users.

SELECT login, last_login FROM users ORDER BY login

func (*Queries) GetLastLoginByEnabled

func (q *Queries) GetLastLoginByEnabled(ctx context.Context, disabled int64) ([]GetLastLoginByEnabledRow, error)

GetLastLoginByEnabled gets the login and last_login time for all users with a given disabled setting ordered by login.

SELECT login, last_login FROM users WHERE disabled = ? ORDER BY login

func (*Queries) GetLastLoginByLogin

func (q *Queries) GetLastLoginByLogin(ctx context.Context, login string) (GetLastLoginByLoginRow, error)

GetLastLoginByLogin gets the login and last_login time for all users ordered by login.

SELECT login, last_login FROM users WHERE login = ? ORDER BY login

func (*Queries) GetLastRead

func (q *Queries) GetLastRead(ctx context.Context, folder string) ([]GetLastReadRow, error)

GetLastRead gets the last message read by a login in a folder.

SELECT CAST(MAX(m.id) AS INT) AS id, m.author FROM messages AS m, users AS u
  WHERE folder = ? AND u.login == m.author
  GROUP BY m.author
  ORDER BY m.author

func (*Queries) GetLastReadByEnabled

func (q *Queries) GetLastReadByEnabled(ctx context.Context, folder string, disabled int64) ([]GetLastReadByEnabledRow, error)

GetLastReadByEnabled gets the last message for a user that's enabled.

SELECT CAST(MAX(m.id) AS INT) AS id, m.author FROM messages AS m, users AS u
  WHERE folder = ? AND u.login == m.author AND u.disabled = ?
  GROUP BY m.author
  ORDER BY m.author

func (*Queries) GetLastReadByUser

func (q *Queries) GetLastReadByUser(ctx context.Context, folder string, author string) (GetLastReadByUserRow, error)

GetLastReadByUser get last message read by a user in a folder.

SELECT CAST(MAX(m.id) AS INT) AS id, m.author FROM messages AS m, users AS u
  WHERE folder = ? AND u.login == m.author AND m.author = ?

func (*Queries) GetMessage

func (q *Queries) GetMessage(ctx context.Context, iD int64, folder string) (Message, error)

GetMessage gets a message by id and by folder.

SELECT id, folder, author, subject, message, permanent, system, shutdown, expiration, create_at, update_at FROM messages WHERE id = ? AND folder = ?

func (*Queries) GetSystem

func (q *Queries) GetSystem(ctx context.Context) (System, error)

GetSystem gets the row from the system folder.

SELECT name, default_expire, expire_limit FROM system LIMIT 1

func (*Queries) GetUser

func (q *Queries) GetUser(ctx context.Context, login string) (User, error)

GetUser gets the user by login.

SELECT login, name, admin, moderator, disabled, prompt, signature, last_activity, last_login, create_at, update_at FROM users WHERE login = ?

func (*Queries) IsFolderOwner

func (q *Queries) IsFolderOwner(ctx context.Context, name string, owner string) (int64, error)

IsFolderOwner returns true if a user is a folder owner.

SELECT 1 FROM folders WHERE name = ? AND owner = ?

func (*Queries) IsFolderReadable

func (q *Queries) IsFolderReadable(ctx context.Context, name string, owner string) (int64, error)

IsFolderReadable checks if a folder is readable for a given user.

SELECT 1 FROM folders WHERE name = ? AND (visibility <= 1 OR owner = ?)

func (*Queries) IsFolderWriteable

func (q *Queries) IsFolderWriteable(ctx context.Context, name string, owner string) (int64, error)

IsFolderWriteable checks if a folder is writeable for a given user.

SELECT 1 FROM folders WHERE name = ? AND (visibility = 0 OR owner = ?)

func (*Queries) IsUserAdmin

func (q *Queries) IsUserAdmin(ctx context.Context, login string) (int64, error)

IsUserAdmin returns the admin setting for the user.

SELECT admin FROM users WHERE login = ?

func (*Queries) LastMsgidIgnoringSeen

func (q *Queries) LastMsgidIgnoringSeen(ctx context.Context, folder string) (int64, error)

LastMsgidIgnoringSeen last message id in a folder without factoring in if the message has been seen.

SELECT CAST(MAX(id) AS INT) FROM messages AS m WHERE m.folder = ?1

func (*Queries) ListFolder

func (q *Queries) ListFolder(ctx context.Context) ([]ListFolderRow, error)

ListFolder lists folders and their message counts.

SELECT f.name, count(m.id) as count, f.description
FROM folders AS f LEFT JOIN messages AS m ON f.name = m.folder
GROUP By f.name
ORDER BY f.name

func (*Queries) ListMessageIDs

func (q *Queries) ListMessageIDs(ctx context.Context, folder string) ([]int64, error)

ListMessageIDs list all message IDs in a specific folder.

SELECT id FROM messages WHERE folder = ? ORDER BY id

func (*Queries) ListMessages

func (q *Queries) ListMessages(ctx context.Context, folder string) ([]Message, error)

ListMessages list all messages in a specific folder.

SELECT id, folder, author, subject, message, permanent, system, shutdown, expiration, create_at, update_at FROM messages WHERE folder = ? ORDER BY id

func (*Queries) ListUsers

func (q *Queries) ListUsers(ctx context.Context) ([]User, error)

ListUsers get a list of all users.

SELECT login, name, admin, moderator, disabled, prompt, signature, last_activity, last_login, create_at, update_at FROM users

func (*Queries) NextMsgid

func (q *Queries) NextMsgid(ctx context.Context, folder string, iD int64, login string) (int64, error)

NextMsgid gets the next unread message id.

SELECT CAST(COALESCE(MIN(id), 0) AS INT) FROM messages AS m
  WHERE m.folder = ?1 AND m.id > ?2
  AND id NOT IN (SELECT msgid FROM seen AS s WHERE s.folder = ?1 AND s.login = ?3)

func (*Queries) NextMsgidIgnoringSeen

func (q *Queries) NextMsgidIgnoringSeen(ctx context.Context, folder string, iD int64) (int64, error)

NextMsgidIgnoringSeen gets the next message id.

SELECT CAST(MIN(id) AS INT) FROM messages AS m
  WHERE m.folder = ?1 AND m.id > ?2

func (*Queries) PrevMsgid

func (q *Queries) PrevMsgid(ctx context.Context, folder string, iD int64, login string) (int64, error)

PrevMsgid get the previous message id.

SELECT CAST(COALESCE(MAX(id), 0) AS INT) FROM messages AS m
  WHERE m.folder = ?1 AND m.id < ?2
  AND id NOT IN (SELECT msgid FROM seen AS s WHERE s.folder = ?1 AND s.login = ?3)

func (*Queries) ReadMessage

func (q *Queries) ReadMessage(ctx context.Context, folder string, iD int64) (Message, error)

ReadMessage returns a specified message id from a folder.

SELECT id, folder, author, subject, message, permanent, system, shutdown, expiration, create_at, update_at FROM messages WHERE folder = ? AND id = ?

func (*Queries) ReapBroadcasts

func (q *Queries) ReapBroadcasts(ctx context.Context) error

ReapBroadcasts deletes broadcast messages over 3 days old.

DELETE FROM broadcast WHERE julianday(current_timestamp) - julianday(create_at) > 3

func (*Queries) Search

func (q *Queries) Search(ctx context.Context, column1 sql.NullString, iD int64, folder string) ([]Message, error)

Search find messages that match subject or message text.

SELECT id, folder, author, subject, message, permanent, system, shutdown, expiration, create_at, update_at FROM messages
  WHERE (message LIKE '%' || ?1 || '%'
     OR subject LIKE '%' || ?1 || '%')
    AND id >= ?2
    AND folder = ?3
  ORDER BY id ASC

func (*Queries) SearchReply

func (q *Queries) SearchReply(ctx context.Context, arg SearchReplyParams) ([]Message, error)

SearchReply find messages that match a specific subject and a different message text.

SELECT id, folder, author, subject, message, permanent, system, shutdown, expiration, create_at, update_at FROM messages
  WHERE message LIKE '%' || ? || '%'
    AND subject = ?
    AND id >= ?
    AND folder = ?
  ORDER BY id ASC

func (*Queries) SearchReplyReverse

func (q *Queries) SearchReplyReverse(ctx context.Context, arg SearchReplyReverseParams) ([]Message, error)

SearchReplyReverse find messages that match a specific subject and a different message text in reverse order.

SELECT id, folder, author, subject, message, permanent, system, shutdown, expiration, create_at, update_at FROM messages
  WHERE message LIKE '%' || ? || '%'
    AND subject = ?
    AND id <= ?
    AND folder = ?
  ORDER BY DESC

func (*Queries) SearchReverse

func (q *Queries) SearchReverse(ctx context.Context, column1 sql.NullString, iD int64, folder string) ([]Message, error)

SearchReverse find messages that match subject or message text in reverse order.

SELECT id, folder, author, subject, message, permanent, system, shutdown, expiration, create_at, update_at FROM messages
  WHERE (message LIKE '%' || ?1 || '%'
     OR subject LIKE '%' || ?1 || '%')
    AND id <= ?2
    AND folder = ?3
  ORDER BY id DESC

func (*Queries) SearchSubject

func (q *Queries) SearchSubject(ctx context.Context, column1 sql.NullString, iD int64, folder string) ([]Message, error)

SearchSubject find messages that match the subject.

SELECT id, folder, author, subject, message, permanent, system, shutdown, expiration, create_at, update_at FROM messages
  WHERE subject LIKE '%' || ? || '%'
    AND id >= ?
    AND folder = ?
  ORDER BY id ASC

func (*Queries) SearchSubjectReverse

func (q *Queries) SearchSubjectReverse(ctx context.Context, column1 sql.NullString, iD int64, folder string) ([]Message, error)

SearchSubjectReverse find messages that match the subject in reverse order.

SELECT id, folder, author, subject, message, permanent, system, shutdown, expiration, create_at, update_at FROM messages
  WHERE subject LIKE '%' || ? || '%'
    AND id <= ?
    AND folder = ?
  ORDER BY id DESC

func (*Queries) SeedCreateMessage

func (q *Queries) SeedCreateMessage(ctx context.Context, arg SeedCreateMessageParams) error

SeedCreateMessage add in the initial messages.

INSERT INTO messages
    (id, folder, author, subject, message, permanent, create_at, update_at, expiration)
  VALUES
    ((SELECT COALESCE(MAX(id), 0) + 1 FROM messages AS m WHERE m.folder = ?1),
     ?1, ?2, ?3, ?4, 1, ?5, ?5, ?6)

func (*Queries) SeedFolderGeneral

func (q *Queries) SeedFolderGeneral(ctx context.Context) error

SeedFolderGeneral adds the GENERAL folder.

INSERT INTO folders (name, owner, description, system, alert)
  VALUES ('GENERAL', 'SYSTEM', 'Default general bulletin folder.', 1, 2)

func (*Queries) SeedUserSystem

func (q *Queries) SeedUserSystem(ctx context.Context) error

SeedUserSystem adds the SYSTEM user.

INSERT INTO users (login, name, admin, moderator)
  VALUES ('SYSTEM', 'System User', 1, 1)

func (*Queries) SetMessageSeen

func (q *Queries) SetMessageSeen(ctx context.Context, login string, folder string, msgid int64) error

SetMessageSeen mark a message as seen for a user.

INSERT INTO seen (login, folder, msgid) VALUES (?, ?, ?)

func (*Queries) SetSystem

func (q *Queries) SetSystem(ctx context.Context, name string, defaultExpire int64, expireLimit int64) error

SetSystem sets the system info. The system folder only has a single row.

INSERT INTO system (rowid, name, default_expire, expire_limit)
            VALUES (1, ?1, ?2, ?3)
  ON CONFLICT(rowid) DO UPDATE
  SET name = ?1, default_expire = ?2, expire_limit = ?3

func (*Queries) UnsetMessageSeen

func (q *Queries) UnsetMessageSeen(ctx context.Context, login string, folder string, msgid int64) error

UnsetMessageSeen unmark a message as seen for a user.

DELETE FROM seen WHERE login = ? AND folder = ? AND msgid = ?

func (*Queries) UpdateDefaultExpire

func (q *Queries) UpdateDefaultExpire(ctx context.Context, defaultExpire int64) error

UpdateDefaultExpire update the default expiration value for the system.

UPDATE system SET default_expire = ? WHERE rowid = 1

func (*Queries) UpdateExpireLimit

func (q *Queries) UpdateExpireLimit(ctx context.Context, expireLimit int64) error

UpdateExpireLimit update the default expiration limit for the system.

UPDATE system SET expire_limit = ? WHERE rowid = 1

func (*Queries) UpdateFolderAccess

func (q *Queries) UpdateFolderAccess(ctx context.Context, login string, folder string, visibility int64) error

UpdateFolderAccess update folder visibility for a given login and folder.

INSERT INTO folder_access (login, folder, visibility) VALUES (?1, ?2, ?3)
  ON CONFLICT(login, folder) DO UPDATE
  SET visibility = ?3

func (*Queries) UpdateFolderAlert

func (q *Queries) UpdateFolderAlert(ctx context.Context, alert int64, name string) error

UpdateFolderAlert updates the alert setting for a folder.

UPDATE folders SET alert = ? WHERE name = ?

func (*Queries) UpdateFolderAlways

func (q *Queries) UpdateFolderAlways(ctx context.Context, always int64, name string) error

UpdateFolderAlways updates the always setting for a folder.

UPDATE folders SET always = ? WHERE name = ?

func (*Queries) UpdateFolderMain

func (q *Queries) UpdateFolderMain(ctx context.Context, arg UpdateFolderMainParams) error

UpdateFolderMain updates the description, owner and name of a folder.

UPDATE folders SET description = ?, owner = ?, name = ?3  WHERE name = ?4

func (*Queries) UpdateFolderSystem

func (q *Queries) UpdateFolderSystem(ctx context.Context, system int64, name string) error

UpdateFolderSystem updates the system setting for a folder.

UPDATE folders SET system = ? WHERE name = ?

func (*Queries) UpdateFolderVisibility

func (q *Queries) UpdateFolderVisibility(ctx context.Context, visibility int64, name string) error

UpdateFolderVisibility updates the visibility setting for a folder.

UPDATE folders SET visibility = ? WHERE name = ?

func (*Queries) UpdateLastActivity

func (q *Queries) UpdateLastActivity(ctx context.Context, lastActivity time.Time, login string) error

UpdateLastActivity updates the user's last_activity time.

UPDATE users SET last_activity = ? WHERE login = ?

func (*Queries) UpdateMessage

func (q *Queries) UpdateMessage(ctx context.Context, arg UpdateMessageParams) error

UpdateMessage updates a message.

UPDATE messages SET
    subject = ?,
    message = ?,
    permanent = ?,
    system = ?,
    shutdown = ?,
    expiration = ?
  WHERE id = ?

func (*Queries) UpdateUserAdmin

func (q *Queries) UpdateUserAdmin(ctx context.Context, admin int64, login string) error

UpdateUserAdmin updates the admin setting for the user (excluding the SYSTEM user).

UPDATE users SET admin = ? WHERE login = ? AND login != 'SYSTEM'

func (*Queries) UpdateUserAlert

func (q *Queries) UpdateUserAlert(ctx context.Context, login string, folder string, alert int64) error

UpdateUserAlert set user's alert setting for a folder.

INSERT INTO folder_configs (login, folder, alert)
  VALUES (?1, ?2, ?3)
  ON CONFLICT(login, folder) DO UPDATE
  SET login = ?1, folder = ?2, alert = ?3

func (*Queries) UpdateUserDisabled

func (q *Queries) UpdateUserDisabled(ctx context.Context, disabled int64, login string) error

UpdateUserDisabled updates the disabled setting for the user (excluding the SYSTEM user).

UPDATE users SET disabled = ? WHERE login = ? AND login != 'SYSTEM'

func (*Queries) UpdateUserLastLogin

func (q *Queries) UpdateUserLastLogin(ctx context.Context, login string) (time.Time, error)

UpdateUserLastLogin set user's last_login time for the user (excluding the SYSTEM user).

UPDATE users SET last_login = CURRENT_TIMESTAMP WHERE login = ? AND login != 'SYSTEM'
RETURNING last_login

func (*Queries) UpdateUserMod

func (q *Queries) UpdateUserMod(ctx context.Context, moderator int64, login string) error

UpdateUserMod set user's moderator setting for the user (excluding the SYSTEM user).

UPDATE users SET moderator = ? WHERE login = ? AND login != 'SYSTEM'

func (*Queries) UpdateUserName

func (q *Queries) UpdateUserName(ctx context.Context, name string, login string) error

UpdateUserName update user's name for a given login (excluding the SYSTEM user).

UPDATE users SET name = ? WHERE login = ? AND login != 'SYSTEM'

func (*Queries) UpdateUserPrompt

func (q *Queries) UpdateUserPrompt(ctx context.Context, prompt int64, login string) error

UpdateUserPrompt set user's prompt setting for the user (excluding the SYSTEM user).

UPDATE users SET prompt = ? WHERE login = ? AND login != 'SYSTEM'

func (*Queries) WithTx

func (q *Queries) WithTx(tx *sql.Tx) *Queries

type SearchReplyParams

type SearchReplyParams struct {
	Column1 sql.NullString
	Subject string
	ID      int64
	Folder  string
}

type SearchReplyReverseParams

type SearchReplyReverseParams struct {
	Column1 sql.NullString
	Subject string
	ID      int64
	Folder  string
}

type SeedCreateMessageParams

type SeedCreateMessageParams struct {
	Folder     string
	Author     string
	Subject    string
	Message    string
	CreateAt   time.Time
	Expiration time.Time
}

type Seen

type Seen struct {
	Login    string
	Folder   string
	Msgid    int64
	CreateAt time.Time
}

type SkewChecker

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

SkewChecker helps us track database skew.

var Skew SkewChecker

Skew helps us track database skew.

func (*SkewChecker) Safe

func (skew *SkewChecker) Safe() bool

Safe returns true if the DB hasn't skewed.

type System

type System struct {
	Name          string
	DefaultExpire int64
	ExpireLimit   int64
}

type UpdateFolderMainParams

type UpdateFolderMainParams struct {
	Description string
	Owner       string
	NewName     string
	OldName     string
}

type UpdateMessageParams

type UpdateMessageParams struct {
	Subject    string
	Message    string
	Permanent  int64
	System     int64
	Shutdown   int64
	Expiration time.Time
	ID         int64
}

type User

type User struct {
	Login        string
	Name         string
	Admin        int64
	Moderator    int64
	Disabled     int64
	Prompt       int64
	Signature    interface{}
	LastActivity time.Time
	LastLogin    time.Time
	CreateAt     time.Time
	UpdateAt     time.Time
}

func (User) String

func (u User) String() string

String displays a user (mainly used for debugging).

Source Files

  • batch.sql.go
  • broadcast.sql.go
  • connection.go
  • db.go
  • display.go
  • doc.go
  • folders.sql.go
  • generate.go
  • messages.sql.go
  • models.go
  • seed.sql.go
  • standard.sql.go
  • system.sql.go
  • users.sql.go
  • version.go

Jump to

Keyboard shortcuts

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