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
- func AlertString(alert int64) string
- func Context() context.Context
- func EffectiveAlert(user, folder int64) int64
- func FolderAlertString(alert int64) string
- func InitialiseSkewChecker(db *sqlx.DB, m *migrate.Migrate)
- func Open() (*sqlx.DB, error)
- type AddUserParams
- type Broadcast
- type CreateFolderParams
- type CreateMessageParams
- type DBTX
- type Folder
- type FolderAccess
- type FolderConfig
- type GetAlertMessagesRow
- type GetExpireRow
- type GetLastLoginByEnabledRow
- type GetLastLoginByLoginRow
- type GetLastLoginRow
- type GetLastReadByEnabledRow
- type GetLastReadByUserRow
- type GetLastReadRow
- type ListFolderRow
- type Mark
- type Message
- type Queries
- func (q *Queries) AddMark(ctx context.Context, folder string, login string, msgid int64) error
- func (q *Queries) AddUser(ctx context.Context, arg AddUserParams) (User, error)
- func (q *Queries) CreateBroadcast(ctx context.Context, author string, bell int64, message string) error
- func (q *Queries) CreateFolder(ctx context.Context, arg CreateFolderParams) error
- func (q *Queries) CreateMessage(ctx context.Context, arg CreateMessageParams) error
- func (q *Queries) DeleteAllExpiredMessages(ctx context.Context) (int64, error)
- func (q *Queries) DeleteAllMessages(ctx context.Context, folder string) error
- func (q *Queries) DeleteAllShutdownMessages(ctx context.Context) (int64, error)
- func (q *Queries) DeleteFolder(ctx context.Context, name string) error
- func (q *Queries) DeleteFolderAccess(ctx context.Context, login string, folder string) error
- func (q *Queries) DeleteMark(ctx context.Context, folder string, login string, msgid int64) error
- func (q *Queries) DeleteMessage(ctx context.Context, iD int64, folder string) error
- func (q *Queries) DeleteUser(ctx context.Context, login string) error
- func (q *Queries) FindFolderExact(ctx context.Context, name string) (Folder, error)
- func (q *Queries) FindFolderPrefix(ctx context.Context, name sql.NullString) (Folder, error)
- func (q *Queries) GetAlertMessages(ctx context.Context, login string, createAt time.Time) ([]GetAlertMessagesRow, error)
- func (q *Queries) GetBroadcasts(ctx context.Context, createAt time.Time) ([]Broadcast, error)
- func (q *Queries) GetExpire(ctx context.Context) (GetExpireRow, error)
- func (q *Queries) GetFolder(ctx context.Context, name string) (Folder, error)
- func (q *Queries) GetFolderExpire(ctx context.Context, name string) (int64, error)
- func (q *Queries) GetLastLogin(ctx context.Context) ([]GetLastLoginRow, error)
- func (q *Queries) GetLastLoginByEnabled(ctx context.Context, disabled int64) ([]GetLastLoginByEnabledRow, error)
- func (q *Queries) GetLastLoginByLogin(ctx context.Context, login string) (GetLastLoginByLoginRow, error)
- func (q *Queries) GetLastRead(ctx context.Context, folder string) ([]GetLastReadRow, error)
- func (q *Queries) GetLastReadByEnabled(ctx context.Context, folder string, disabled int64) ([]GetLastReadByEnabledRow, error)
- func (q *Queries) GetLastReadByUser(ctx context.Context, folder string, author string) (GetLastReadByUserRow, error)
- func (q *Queries) GetMessage(ctx context.Context, iD int64, folder string) (Message, error)
- func (q *Queries) GetSystem(ctx context.Context) (System, error)
- func (q *Queries) GetUser(ctx context.Context, login string) (User, error)
- func (q *Queries) IsFolderOwner(ctx context.Context, name string, owner string) (int64, error)
- func (q *Queries) IsFolderReadable(ctx context.Context, name string, owner string) (int64, error)
- func (q *Queries) IsFolderWriteable(ctx context.Context, name string, owner string) (int64, error)
- func (q *Queries) IsUserAdmin(ctx context.Context, login string) (int64, error)
- func (q *Queries) LastMsgidIgnoringSeen(ctx context.Context, folder string) (int64, error)
- func (q *Queries) ListFolder(ctx context.Context) ([]ListFolderRow, error)
- func (q *Queries) ListMessageIDs(ctx context.Context, folder string) ([]int64, error)
- func (q *Queries) ListMessages(ctx context.Context, folder string) ([]Message, error)
- func (q *Queries) ListUsers(ctx context.Context) ([]User, error)
- func (q *Queries) NextMsgid(ctx context.Context, folder string, iD int64, login string) (int64, error)
- func (q *Queries) NextMsgidIgnoringSeen(ctx context.Context, folder string, iD int64) (int64, error)
- func (q *Queries) PrevMsgid(ctx context.Context, folder string, iD int64, login string) (int64, error)
- func (q *Queries) ReadMessage(ctx context.Context, folder string, iD int64) (Message, error)
- func (q *Queries) ReapBroadcasts(ctx context.Context) error
- func (q *Queries) Search(ctx context.Context, column1 sql.NullString, iD int64, folder string) ([]Message, error)
- func (q *Queries) SearchReply(ctx context.Context, arg SearchReplyParams) ([]Message, error)
- func (q *Queries) SearchReplyReverse(ctx context.Context, arg SearchReplyReverseParams) ([]Message, error)
- func (q *Queries) SearchReverse(ctx context.Context, column1 sql.NullString, iD int64, folder string) ([]Message, error)
- func (q *Queries) SearchSubject(ctx context.Context, column1 sql.NullString, iD int64, folder string) ([]Message, error)
- func (q *Queries) SearchSubjectReverse(ctx context.Context, column1 sql.NullString, iD int64, folder string) ([]Message, error)
- func (q *Queries) SeedCreateMessage(ctx context.Context, arg SeedCreateMessageParams) error
- func (q *Queries) SeedFolderGeneral(ctx context.Context) error
- func (q *Queries) SeedUserSystem(ctx context.Context) error
- func (q *Queries) SetMessageSeen(ctx context.Context, login string, folder string, msgid int64) error
- func (q *Queries) SetSystem(ctx context.Context, name string, defaultExpire int64, expireLimit int64) error
- func (q *Queries) UnsetMessageSeen(ctx context.Context, login string, folder string, msgid int64) error
- func (q *Queries) UpdateDefaultExpire(ctx context.Context, defaultExpire int64) error
- func (q *Queries) UpdateExpireLimit(ctx context.Context, expireLimit int64) error
- func (q *Queries) UpdateFolderAccess(ctx context.Context, login string, folder string, visibility int64) error
- func (q *Queries) UpdateFolderAlert(ctx context.Context, alert int64, name string) error
- func (q *Queries) UpdateFolderAlways(ctx context.Context, always int64, name string) error
- func (q *Queries) UpdateFolderMain(ctx context.Context, arg UpdateFolderMainParams) error
- func (q *Queries) UpdateFolderSystem(ctx context.Context, system int64, name string) error
- func (q *Queries) UpdateFolderVisibility(ctx context.Context, visibility int64, name string) error
- func (q *Queries) UpdateLastActivity(ctx context.Context, lastActivity time.Time, login string) error
- func (q *Queries) UpdateMessage(ctx context.Context, arg UpdateMessageParams) error
- func (q *Queries) UpdateUserAdmin(ctx context.Context, admin int64, login string) error
- func (q *Queries) UpdateUserAlert(ctx context.Context, login string, folder string, alert int64) error
- func (q *Queries) UpdateUserDisabled(ctx context.Context, disabled int64, login string) error
- func (q *Queries) UpdateUserLastLogin(ctx context.Context, login string) (time.Time, error)
- func (q *Queries) UpdateUserMod(ctx context.Context, moderator int64, login string) error
- func (q *Queries) UpdateUserName(ctx context.Context, name string, login string) error
- func (q *Queries) UpdateUserPrompt(ctx context.Context, prompt int64, login string) error
- func (q *Queries) WithTx(tx *sql.Tx) *Queries
- type SearchReplyParams
- type SearchReplyReverseParams
- type SeedCreateMessageParams
- type Seen
- type SkewChecker
- type System
- type UpdateFolderMainParams
- type UpdateMessageParams
- type User
Constants ¶
const ( AlertDoNotCare int64 = iota AlertNone AlertBrief AlertReadNew AlertShowNew AlertBriefPerm AlertReadNewPerm AlertShowNewPerm )
Alert values.
Variables ¶
This section is empty.
Functions ¶
func AlertString ¶
AlertString translates an alert number to a string.
func EffectiveAlert ¶
EffectiveAlert returns the effective alert from a user and folder alert level.
func FolderAlertString ¶
FolderAlertString translates an alert number to a string.
func InitialiseSkewChecker ¶
InitialiseSkewChecker creates an object to track skew.
Types ¶
type AddUserParams ¶
type Broadcast ¶
type CreateFolderParams ¶
type CreateMessageParams ¶
type DBTX ¶
type Folder ¶
type FolderConfig ¶
type GetAlertMessagesRow ¶
type GetLastLoginByEnabledRow ¶
type GetLastLoginByLoginRow ¶
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 ¶
AlertLine renders a message in a line for a SHOWNEW setting.
func (*Message) OneLine ¶
OneLine renders a message in a line.
type Queries ¶
type Queries struct {
// contains filtered or unexported fields
}
func (*Queries) AddMark ¶
AddMark mark a message id for a login in a folder.
INSERT INTO marks (folder, login, msgid) VALUES (?, ?, ?)
func (*Queries) AddUser ¶
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 ¶
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 ¶
DeleteAllMessages delete all messages in a folder.
DELETE FROM messages WHERE folder = ?
func (*Queries) DeleteAllShutdownMessages ¶
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 ¶
DeleteFolder remove a folder by name.
DELETE FROM folders WHERE name = ?
func (*Queries) DeleteFolderAccess ¶
DeleteFolderAccess remove access for a folder for a given login.
DELETE FROM folder_access WHERE login = ? AND folder = ?
func (*Queries) DeleteMark ¶
DeleteMark unmark a message id for a login in a folder.
DELETE FROM marks WHERE folder = ? AND login = ? AND msgid = ?
func (*Queries) DeleteMessage ¶
DeleteMessage removes a message by id and by folder.
DELETE FROM messages WHERE id = ? AND folder = ?
func (*Queries) DeleteUser ¶
DeleteUser removes the user (as long as the user isn't SYSTEM).
DELETE FROM users WHERE login = ? AND login != 'SYSTEM'
func (*Queries) FindFolderExact ¶
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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
GetSystem gets the row from the system folder.
SELECT name, default_expire, expire_limit FROM system LIMIT 1
func (*Queries) GetUser ¶
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 ¶
IsFolderOwner returns true if a user is a folder owner.
SELECT 1 FROM folders WHERE name = ? AND owner = ?
func (*Queries) IsFolderReadable ¶
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 ¶
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 ¶
IsUserAdmin returns the admin setting for the user.
SELECT admin FROM users WHERE login = ?
func (*Queries) LastMsgidIgnoringSeen ¶
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 ¶
ListMessageIDs list all message IDs in a specific folder.
SELECT id FROM messages WHERE folder = ? ORDER BY id
func (*Queries) ListMessages ¶
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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
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 ¶
UpdateDefaultExpire update the default expiration value for the system.
UPDATE system SET default_expire = ? WHERE rowid = 1
func (*Queries) UpdateExpireLimit ¶
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 ¶
UpdateFolderAlert updates the alert setting for a folder.
UPDATE folders SET alert = ? WHERE name = ?
func (*Queries) UpdateFolderAlways ¶
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 ¶
UpdateFolderSystem updates the system setting for a folder.
UPDATE folders SET system = ? WHERE name = ?
func (*Queries) UpdateFolderVisibility ¶
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 ¶
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 ¶
UpdateUserDisabled updates the disabled setting for the user (excluding the SYSTEM user).
UPDATE users SET disabled = ? WHERE login = ? AND login != 'SYSTEM'
func (*Queries) UpdateUserLastLogin ¶
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 ¶
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 ¶
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 ¶
UpdateUserPrompt set user's prompt setting for the user (excluding the SYSTEM user).
UPDATE users SET prompt = ? WHERE login = ? AND login != 'SYSTEM'
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 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 UpdateFolderMainParams ¶
type UpdateMessageParams ¶
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