From 6375c2ce60f505ae7eff9f09b0f15436bcca2813 Mon Sep 17 00:00:00 2001 From: binwiederhier Date: Sat, 21 Feb 2026 21:29:29 -0500 Subject: [PATCH] Renaming for consistency --- message/store_postgres.go | 100 +++++++------- message/store_postgres_schema.go | 14 +- message/store_sqlite.go | 8 +- message/store_sqlite_schema.go | 34 ++--- user/store_postgres.go | 220 +++++++++++++++---------------- user/store_postgres_schema.go | 10 +- user/store_sqlite.go | 220 +++++++++++++++---------------- user/store_sqlite_schema.go | 28 ++-- webpush/store_postgres.go | 66 +++++----- webpush/store_sqlite.go | 22 ++-- 10 files changed, 361 insertions(+), 361 deletions(-) diff --git a/message/store_postgres.go b/message/store_postgres.go index 32150e2d..4fb052c8 100644 --- a/message/store_postgres.go +++ b/message/store_postgres.go @@ -7,99 +7,99 @@ import ( // PostgreSQL runtime query constants const ( - pgInsertMessageQuery = ` + postgresInsertMessageQuery = ` INSERT INTO message (mid, sequence_id, time, event, expires, topic, message, title, priority, tags, click, icon, actions, attachment_name, attachment_type, attachment_size, attachment_expires, attachment_url, attachment_deleted, sender, user_id, content_type, encoding, published) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, $24) ` - pgDeleteMessageQuery = `DELETE FROM message WHERE mid = $1` - pgSelectScheduledMessageIDsBySeqIDQuery = `SELECT mid FROM message WHERE topic = $1 AND sequence_id = $2 AND published = FALSE` - pgDeleteScheduledBySequenceIDQuery = `DELETE FROM message WHERE topic = $1 AND sequence_id = $2 AND published = FALSE` - pgUpdateMessagesForTopicExpiryQuery = `UPDATE message SET expires = $1 WHERE topic = $2` - pgSelectRowIDFromMessageID = `SELECT id FROM message WHERE mid = $1` - pgSelectMessagesByIDQuery = ` + postgresDeleteMessageQuery = `DELETE FROM message WHERE mid = $1` + postgresSelectScheduledMessageIDsBySeqIDQuery = `SELECT mid FROM message WHERE topic = $1 AND sequence_id = $2 AND published = FALSE` + postgresDeleteScheduledBySequenceIDQuery = `DELETE FROM message WHERE topic = $1 AND sequence_id = $2 AND published = FALSE` + postgresUpdateMessagesForTopicExpiryQuery = `UPDATE message SET expires = $1 WHERE topic = $2` + postgresSelectRowIDFromMessageIDQuery = `SELECT id FROM message WHERE mid = $1` + postgresSelectMessagesByIDQuery = ` SELECT mid, sequence_id, time, event, expires, topic, message, title, priority, tags, click, icon, actions, attachment_name, attachment_type, attachment_size, attachment_expires, attachment_url, sender, user_id, content_type, encoding FROM message WHERE mid = $1 ` - pgSelectMessagesSinceTimeQuery = ` + postgresSelectMessagesSinceTimeQuery = ` SELECT mid, sequence_id, time, event, expires, topic, message, title, priority, tags, click, icon, actions, attachment_name, attachment_type, attachment_size, attachment_expires, attachment_url, sender, user_id, content_type, encoding FROM message WHERE topic = $1 AND time >= $2 AND published = TRUE ORDER BY time, id ` - pgSelectMessagesSinceTimeIncludeScheduledQuery = ` + postgresSelectMessagesSinceTimeIncludeScheduledQuery = ` SELECT mid, sequence_id, time, event, expires, topic, message, title, priority, tags, click, icon, actions, attachment_name, attachment_type, attachment_size, attachment_expires, attachment_url, sender, user_id, content_type, encoding FROM message WHERE topic = $1 AND time >= $2 ORDER BY time, id ` - pgSelectMessagesSinceIDQuery = ` + postgresSelectMessagesSinceIDQuery = ` SELECT mid, sequence_id, time, event, expires, topic, message, title, priority, tags, click, icon, actions, attachment_name, attachment_type, attachment_size, attachment_expires, attachment_url, sender, user_id, content_type, encoding FROM message WHERE topic = $1 AND id > $2 AND published = TRUE ORDER BY time, id ` - pgSelectMessagesSinceIDIncludeScheduledQuery = ` + postgresSelectMessagesSinceIDIncludeScheduledQuery = ` SELECT mid, sequence_id, time, event, expires, topic, message, title, priority, tags, click, icon, actions, attachment_name, attachment_type, attachment_size, attachment_expires, attachment_url, sender, user_id, content_type, encoding FROM message WHERE topic = $1 AND (id > $2 OR published = FALSE) ORDER BY time, id ` - pgSelectMessagesLatestQuery = ` + postgresSelectMessagesLatestQuery = ` SELECT mid, sequence_id, time, event, expires, topic, message, title, priority, tags, click, icon, actions, attachment_name, attachment_type, attachment_size, attachment_expires, attachment_url, sender, user_id, content_type, encoding FROM message WHERE topic = $1 AND published = TRUE ORDER BY time DESC, id DESC LIMIT 1 ` - pgSelectMessagesDueQuery = ` + postgresSelectMessagesDueQuery = ` SELECT mid, sequence_id, time, event, expires, topic, message, title, priority, tags, click, icon, actions, attachment_name, attachment_type, attachment_size, attachment_expires, attachment_url, sender, user_id, content_type, encoding FROM message WHERE time <= $1 AND published = FALSE ORDER BY time, id ` - pgSelectMessagesExpiredQuery = `SELECT mid FROM message WHERE expires <= $1 AND published = TRUE` - pgUpdateMessagePublishedQuery = `UPDATE message SET published = TRUE WHERE mid = $1` - pgSelectMessagesCountQuery = `SELECT COUNT(*) FROM message` - pgSelectMessageCountPerTopicQuery = `SELECT topic, COUNT(*) FROM message GROUP BY topic` - pgSelectTopicsQuery = `SELECT topic FROM message GROUP BY topic` + postgresSelectMessagesExpiredQuery = `SELECT mid FROM message WHERE expires <= $1 AND published = TRUE` + postgresUpdateMessagePublishedQuery = `UPDATE message SET published = TRUE WHERE mid = $1` + postgresSelectMessagesCountQuery = `SELECT COUNT(*) FROM message` + postgresSelectMessageCountPerTopicQuery = `SELECT topic, COUNT(*) FROM message GROUP BY topic` + postgresSelectTopicsQuery = `SELECT topic FROM message GROUP BY topic` - pgUpdateAttachmentDeleted = `UPDATE message SET attachment_deleted = TRUE WHERE mid = $1` - pgSelectAttachmentsExpiredQuery = `SELECT mid FROM message WHERE attachment_expires > 0 AND attachment_expires <= $1 AND attachment_deleted = FALSE` - pgSelectAttachmentsSizeBySenderQuery = `SELECT COALESCE(SUM(attachment_size), 0) FROM message WHERE user_id = '' AND sender = $1 AND attachment_expires >= $2` - pgSelectAttachmentsSizeByUserIDQuery = `SELECT COALESCE(SUM(attachment_size), 0) FROM message WHERE user_id = $1 AND attachment_expires >= $2` + postgresUpdateAttachmentDeletedQuery = `UPDATE message SET attachment_deleted = TRUE WHERE mid = $1` + postgresSelectAttachmentsExpiredQuery = `SELECT mid FROM message WHERE attachment_expires > 0 AND attachment_expires <= $1 AND attachment_deleted = FALSE` + postgresSelectAttachmentsSizeBySenderQuery = `SELECT COALESCE(SUM(attachment_size), 0) FROM message WHERE user_id = '' AND sender = $1 AND attachment_expires >= $2` + postgresSelectAttachmentsSizeByUserIDQuery = `SELECT COALESCE(SUM(attachment_size), 0) FROM message WHERE user_id = $1 AND attachment_expires >= $2` - pgSelectStatsQuery = `SELECT value FROM message_stats WHERE key = 'messages'` - pgUpdateStatsQuery = `UPDATE message_stats SET value = $1 WHERE key = 'messages'` - pgUpdateMessageTimesQuery = `UPDATE message SET time = $1 WHERE mid = $2` + postgresSelectStatsQuery = `SELECT value FROM message_stats WHERE key = 'messages'` + postgresUpdateStatsQuery = `UPDATE message_stats SET value = $1 WHERE key = 'messages'` + postgresUpdateMessageTimesQuery = `UPDATE message SET time = $1 WHERE mid = $2` ) var pgQueries = storeQueries{ - insertMessage: pgInsertMessageQuery, - deleteMessage: pgDeleteMessageQuery, - selectScheduledMessageIDsBySeqID: pgSelectScheduledMessageIDsBySeqIDQuery, - deleteScheduledBySequenceID: pgDeleteScheduledBySequenceIDQuery, - updateMessagesForTopicExpiry: pgUpdateMessagesForTopicExpiryQuery, - selectRowIDFromMessageID: pgSelectRowIDFromMessageID, - selectMessagesByID: pgSelectMessagesByIDQuery, - selectMessagesSinceTime: pgSelectMessagesSinceTimeQuery, - selectMessagesSinceTimeScheduled: pgSelectMessagesSinceTimeIncludeScheduledQuery, - selectMessagesSinceID: pgSelectMessagesSinceIDQuery, - selectMessagesSinceIDScheduled: pgSelectMessagesSinceIDIncludeScheduledQuery, - selectMessagesLatest: pgSelectMessagesLatestQuery, - selectMessagesDue: pgSelectMessagesDueQuery, - selectMessagesExpired: pgSelectMessagesExpiredQuery, - updateMessagePublished: pgUpdateMessagePublishedQuery, - selectMessagesCount: pgSelectMessagesCountQuery, - selectMessageCountPerTopic: pgSelectMessageCountPerTopicQuery, - selectTopics: pgSelectTopicsQuery, - updateAttachmentDeleted: pgUpdateAttachmentDeleted, - selectAttachmentsExpired: pgSelectAttachmentsExpiredQuery, - selectAttachmentsSizeBySender: pgSelectAttachmentsSizeBySenderQuery, - selectAttachmentsSizeByUserID: pgSelectAttachmentsSizeByUserIDQuery, - selectStats: pgSelectStatsQuery, - updateStats: pgUpdateStatsQuery, - updateMessageTime: pgUpdateMessageTimesQuery, + insertMessage: postgresInsertMessageQuery, + deleteMessage: postgresDeleteMessageQuery, + selectScheduledMessageIDsBySeqID: postgresSelectScheduledMessageIDsBySeqIDQuery, + deleteScheduledBySequenceID: postgresDeleteScheduledBySequenceIDQuery, + updateMessagesForTopicExpiry: postgresUpdateMessagesForTopicExpiryQuery, + selectRowIDFromMessageID: postgresSelectRowIDFromMessageIDQuery, + selectMessagesByID: postgresSelectMessagesByIDQuery, + selectMessagesSinceTime: postgresSelectMessagesSinceTimeQuery, + selectMessagesSinceTimeScheduled: postgresSelectMessagesSinceTimeIncludeScheduledQuery, + selectMessagesSinceID: postgresSelectMessagesSinceIDQuery, + selectMessagesSinceIDScheduled: postgresSelectMessagesSinceIDIncludeScheduledQuery, + selectMessagesLatest: postgresSelectMessagesLatestQuery, + selectMessagesDue: postgresSelectMessagesDueQuery, + selectMessagesExpired: postgresSelectMessagesExpiredQuery, + updateMessagePublished: postgresUpdateMessagePublishedQuery, + selectMessagesCount: postgresSelectMessagesCountQuery, + selectMessageCountPerTopic: postgresSelectMessageCountPerTopicQuery, + selectTopics: postgresSelectTopicsQuery, + updateAttachmentDeleted: postgresUpdateAttachmentDeletedQuery, + selectAttachmentsExpired: postgresSelectAttachmentsExpiredQuery, + selectAttachmentsSizeBySender: postgresSelectAttachmentsSizeBySenderQuery, + selectAttachmentsSizeByUserID: postgresSelectAttachmentsSizeByUserIDQuery, + selectStats: postgresSelectStatsQuery, + updateStats: postgresUpdateStatsQuery, + updateMessageTime: postgresUpdateMessageTimesQuery, } // NewPostgresStore creates a new PostgreSQL-backed message cache store using an existing database connection pool. diff --git a/message/store_postgres_schema.go b/message/store_postgres_schema.go index e7aa3fe8..6e4d654c 100644 --- a/message/store_postgres_schema.go +++ b/message/store_postgres_schema.go @@ -7,7 +7,7 @@ import ( // Initial PostgreSQL schema const ( - pgCreateTablesQuery = ` + postgresCreateTablesQuery = ` CREATE TABLE IF NOT EXISTS message ( id BIGSERIAL PRIMARY KEY, mid TEXT NOT NULL, @@ -57,14 +57,14 @@ const ( // PostgreSQL schema management queries const ( - pgCurrentSchemaVersion = 14 - pgInsertSchemaVersion = `INSERT INTO schema_version (store, version) VALUES ('message', $1)` - pgSelectSchemaVersionQuery = `SELECT version FROM schema_version WHERE store = 'message'` + pgCurrentSchemaVersion = 14 + postgresInsertSchemaVersionQuery = `INSERT INTO schema_version (store, version) VALUES ('message', $1)` + postgresSelectSchemaVersionQuery = `SELECT version FROM schema_version WHERE store = 'message'` ) func setupPostgresDB(db *sql.DB) error { var schemaVersion int - err := db.QueryRow(pgSelectSchemaVersionQuery).Scan(&schemaVersion) + err := db.QueryRow(postgresSelectSchemaVersionQuery).Scan(&schemaVersion) if err != nil { return setupNewPostgresDB(db) } @@ -80,10 +80,10 @@ func setupNewPostgresDB(db *sql.DB) error { return err } defer tx.Rollback() - if _, err := tx.Exec(pgCreateTablesQuery); err != nil { + if _, err := tx.Exec(postgresCreateTablesQuery); err != nil { return err } - if _, err := tx.Exec(pgInsertSchemaVersion, pgCurrentSchemaVersion); err != nil { + if _, err := tx.Exec(postgresInsertSchemaVersionQuery, pgCurrentSchemaVersion); err != nil { return err } return tx.Commit() diff --git a/message/store_sqlite.go b/message/store_sqlite.go index ebccd468..646e3975 100644 --- a/message/store_sqlite.go +++ b/message/store_sqlite.go @@ -20,7 +20,7 @@ const ( sqliteSelectScheduledMessageIDsBySeqIDQuery = `SELECT mid FROM messages WHERE topic = ? AND sequence_id = ? AND published = 0` sqliteDeleteScheduledBySequenceIDQuery = `DELETE FROM messages WHERE topic = ? AND sequence_id = ? AND published = 0` sqliteUpdateMessagesForTopicExpiryQuery = `UPDATE messages SET expires = ? WHERE topic = ?` - sqliteSelectRowIDFromMessageID = `SELECT id FROM messages WHERE mid = ?` + sqliteSelectRowIDFromMessageIDQuery = `SELECT id FROM messages WHERE mid = ?` sqliteSelectMessagesByIDQuery = ` SELECT mid, sequence_id, time, event, expires, topic, message, title, priority, tags, click, icon, actions, attachment_name, attachment_type, attachment_size, attachment_expires, attachment_url, sender, user, content_type, encoding FROM messages @@ -69,7 +69,7 @@ const ( sqliteSelectMessageCountPerTopicQuery = `SELECT topic, COUNT(*) FROM messages GROUP BY topic` sqliteSelectTopicsQuery = `SELECT topic FROM messages GROUP BY topic` - sqliteUpdateAttachmentDeleted = `UPDATE messages SET attachment_deleted = 1 WHERE mid = ?` + sqliteUpdateAttachmentDeletedQuery = `UPDATE messages SET attachment_deleted = 1 WHERE mid = ?` sqliteSelectAttachmentsExpiredQuery = `SELECT mid FROM messages WHERE attachment_expires > 0 AND attachment_expires <= ? AND attachment_deleted = 0` sqliteSelectAttachmentsSizeBySenderQuery = `SELECT IFNULL(SUM(attachment_size), 0) FROM messages WHERE user = '' AND sender = ? AND attachment_expires >= ?` sqliteSelectAttachmentsSizeByUserIDQuery = `SELECT IFNULL(SUM(attachment_size), 0) FROM messages WHERE user = ? AND attachment_expires >= ?` @@ -85,7 +85,7 @@ var sqliteQueries = storeQueries{ selectScheduledMessageIDsBySeqID: sqliteSelectScheduledMessageIDsBySeqIDQuery, deleteScheduledBySequenceID: sqliteDeleteScheduledBySequenceIDQuery, updateMessagesForTopicExpiry: sqliteUpdateMessagesForTopicExpiryQuery, - selectRowIDFromMessageID: sqliteSelectRowIDFromMessageID, + selectRowIDFromMessageID: sqliteSelectRowIDFromMessageIDQuery, selectMessagesByID: sqliteSelectMessagesByIDQuery, selectMessagesSinceTime: sqliteSelectMessagesSinceTimeQuery, selectMessagesSinceTimeScheduled: sqliteSelectMessagesSinceTimeIncludeScheduledQuery, @@ -98,7 +98,7 @@ var sqliteQueries = storeQueries{ selectMessagesCount: sqliteSelectMessagesCountQuery, selectMessageCountPerTopic: sqliteSelectMessageCountPerTopicQuery, selectTopics: sqliteSelectTopicsQuery, - updateAttachmentDeleted: sqliteUpdateAttachmentDeleted, + updateAttachmentDeleted: sqliteUpdateAttachmentDeletedQuery, selectAttachmentsExpired: sqliteSelectAttachmentsExpiredQuery, selectAttachmentsSizeBySender: sqliteSelectAttachmentsSizeBySenderQuery, selectAttachmentsSizeByUserID: sqliteSelectAttachmentsSizeByUserIDQuery, diff --git a/message/store_sqlite_schema.go b/message/store_sqlite_schema.go index cd01555f..8adc80f4 100644 --- a/message/store_sqlite_schema.go +++ b/message/store_sqlite_schema.go @@ -65,8 +65,8 @@ const ( version INT NOT NULL ); ` - sqliteInsertSchemaVersion = `INSERT INTO schemaVersion VALUES (1, ?)` - sqliteUpdateSchemaVersion = `UPDATE schemaVersion SET version = ? WHERE id = 1` + sqliteInsertSchemaVersionQuery = `INSERT INTO schemaVersion VALUES (1, ?)` + sqliteUpdateSchemaVersionQuery = `UPDATE schemaVersion SET version = ? WHERE id = 1` sqliteSelectSchemaVersionQuery = `SELECT version FROM schemaVersion WHERE id = 1` ) @@ -265,7 +265,7 @@ func setupNewSQLite(db *sql.DB) error { if _, err := db.Exec(sqliteCreateSchemaVersionTableQuery); err != nil { return err } - if _, err := db.Exec(sqliteInsertSchemaVersion, sqliteCurrentSchemaVersion); err != nil { + if _, err := db.Exec(sqliteInsertSchemaVersionQuery, sqliteCurrentSchemaVersion); err != nil { return err } return nil @@ -288,7 +288,7 @@ func sqliteMigrateFrom0(db *sql.DB, _ time.Duration) error { if _, err := db.Exec(sqliteCreateSchemaVersionTableQuery); err != nil { return err } - if _, err := db.Exec(sqliteInsertSchemaVersion, 1); err != nil { + if _, err := db.Exec(sqliteInsertSchemaVersionQuery, 1); err != nil { return err } return nil @@ -299,7 +299,7 @@ func sqliteMigrateFrom1(db *sql.DB, _ time.Duration) error { if _, err := db.Exec(sqliteMigrate1To2AlterMessagesTableQuery); err != nil { return err } - if _, err := db.Exec(sqliteUpdateSchemaVersion, 2); err != nil { + if _, err := db.Exec(sqliteUpdateSchemaVersionQuery, 2); err != nil { return err } return nil @@ -310,7 +310,7 @@ func sqliteMigrateFrom2(db *sql.DB, _ time.Duration) error { if _, err := db.Exec(sqliteMigrate2To3AlterMessagesTableQuery); err != nil { return err } - if _, err := db.Exec(sqliteUpdateSchemaVersion, 3); err != nil { + if _, err := db.Exec(sqliteUpdateSchemaVersionQuery, 3); err != nil { return err } return nil @@ -321,7 +321,7 @@ func sqliteMigrateFrom3(db *sql.DB, _ time.Duration) error { if _, err := db.Exec(sqliteMigrate3To4AlterMessagesTableQuery); err != nil { return err } - if _, err := db.Exec(sqliteUpdateSchemaVersion, 4); err != nil { + if _, err := db.Exec(sqliteUpdateSchemaVersionQuery, 4); err != nil { return err } return nil @@ -332,7 +332,7 @@ func sqliteMigrateFrom4(db *sql.DB, _ time.Duration) error { if _, err := db.Exec(sqliteMigrate4To5AlterMessagesTableQuery); err != nil { return err } - if _, err := db.Exec(sqliteUpdateSchemaVersion, 5); err != nil { + if _, err := db.Exec(sqliteUpdateSchemaVersionQuery, 5); err != nil { return err } return nil @@ -343,7 +343,7 @@ func sqliteMigrateFrom5(db *sql.DB, _ time.Duration) error { if _, err := db.Exec(sqliteMigrate5To6AlterMessagesTableQuery); err != nil { return err } - if _, err := db.Exec(sqliteUpdateSchemaVersion, 6); err != nil { + if _, err := db.Exec(sqliteUpdateSchemaVersionQuery, 6); err != nil { return err } return nil @@ -354,7 +354,7 @@ func sqliteMigrateFrom6(db *sql.DB, _ time.Duration) error { if _, err := db.Exec(sqliteMigrate6To7AlterMessagesTableQuery); err != nil { return err } - if _, err := db.Exec(sqliteUpdateSchemaVersion, 7); err != nil { + if _, err := db.Exec(sqliteUpdateSchemaVersionQuery, 7); err != nil { return err } return nil @@ -365,7 +365,7 @@ func sqliteMigrateFrom7(db *sql.DB, _ time.Duration) error { if _, err := db.Exec(sqliteMigrate7To8AlterMessagesTableQuery); err != nil { return err } - if _, err := db.Exec(sqliteUpdateSchemaVersion, 8); err != nil { + if _, err := db.Exec(sqliteUpdateSchemaVersionQuery, 8); err != nil { return err } return nil @@ -376,7 +376,7 @@ func sqliteMigrateFrom8(db *sql.DB, _ time.Duration) error { if _, err := db.Exec(sqliteMigrate8To9AlterMessagesTableQuery); err != nil { return err } - if _, err := db.Exec(sqliteUpdateSchemaVersion, 9); err != nil { + if _, err := db.Exec(sqliteUpdateSchemaVersionQuery, 9); err != nil { return err } return nil @@ -395,7 +395,7 @@ func sqliteMigrateFrom9(db *sql.DB, cacheDuration time.Duration) error { if _, err := tx.Exec(sqliteMigrate9To10UpdateMessageExpiryQuery, int64(cacheDuration.Seconds())); err != nil { return err } - if _, err := tx.Exec(sqliteUpdateSchemaVersion, 10); err != nil { + if _, err := tx.Exec(sqliteUpdateSchemaVersionQuery, 10); err != nil { return err } return tx.Commit() @@ -411,7 +411,7 @@ func sqliteMigrateFrom10(db *sql.DB, _ time.Duration) error { if _, err := tx.Exec(sqliteMigrate10To11AlterMessagesTableQuery); err != nil { return err } - if _, err := tx.Exec(sqliteUpdateSchemaVersion, 11); err != nil { + if _, err := tx.Exec(sqliteUpdateSchemaVersionQuery, 11); err != nil { return err } return tx.Commit() @@ -427,7 +427,7 @@ func sqliteMigrateFrom11(db *sql.DB, _ time.Duration) error { if _, err := tx.Exec(sqliteMigrate11To12AlterMessagesTableQuery); err != nil { return err } - if _, err := tx.Exec(sqliteUpdateSchemaVersion, 12); err != nil { + if _, err := tx.Exec(sqliteUpdateSchemaVersionQuery, 12); err != nil { return err } return tx.Commit() @@ -443,7 +443,7 @@ func sqliteMigrateFrom12(db *sql.DB, _ time.Duration) error { if _, err := tx.Exec(sqliteMigrate12To13AlterMessagesTableQuery); err != nil { return err } - if _, err := tx.Exec(sqliteUpdateSchemaVersion, 13); err != nil { + if _, err := tx.Exec(sqliteUpdateSchemaVersionQuery, 13); err != nil { return err } return tx.Commit() @@ -459,7 +459,7 @@ func sqliteMigrateFrom13(db *sql.DB, _ time.Duration) error { if _, err := tx.Exec(sqliteMigrate13To14AlterMessagesTableQuery); err != nil { return err } - if _, err := tx.Exec(sqliteUpdateSchemaVersion, 14); err != nil { + if _, err := tx.Exec(sqliteUpdateSchemaVersionQuery, 14); err != nil { return err } return tx.Commit() diff --git a/user/store_postgres.go b/user/store_postgres.go index be7f998f..666fd4f4 100644 --- a/user/store_postgres.go +++ b/user/store_postgres.go @@ -7,32 +7,32 @@ import ( // PostgreSQL queries const ( // User queries - postgresSelectUserByID = ` + postgresSelectUserByIDQuery = ` SELECT u.id, u.user_name, u.pass, u.role, u.prefs, u.sync_topic, u.provisioned, u.stats_messages, u.stats_emails, u.stats_calls, u.stripe_customer_id, u.stripe_subscription_id, u.stripe_subscription_status, u.stripe_subscription_interval, u.stripe_subscription_paid_until, u.stripe_subscription_cancel_at, u.deleted, t.id, t.code, t.name, t.messages_limit, t.messages_expiry_duration, t.emails_limit, t.calls_limit, t.reservations_limit, t.attachment_file_size_limit, t.attachment_total_size_limit, t.attachment_expiry_duration, t.attachment_bandwidth_limit, t.stripe_monthly_price_id, t.stripe_yearly_price_id FROM "user" u LEFT JOIN tier t on t.id = u.tier_id WHERE u.id = $1 ` - postgresSelectUserByName = ` + postgresSelectUserByNameQuery = ` SELECT u.id, u.user_name, u.pass, u.role, u.prefs, u.sync_topic, u.provisioned, u.stats_messages, u.stats_emails, u.stats_calls, u.stripe_customer_id, u.stripe_subscription_id, u.stripe_subscription_status, u.stripe_subscription_interval, u.stripe_subscription_paid_until, u.stripe_subscription_cancel_at, u.deleted, t.id, t.code, t.name, t.messages_limit, t.messages_expiry_duration, t.emails_limit, t.calls_limit, t.reservations_limit, t.attachment_file_size_limit, t.attachment_total_size_limit, t.attachment_expiry_duration, t.attachment_bandwidth_limit, t.stripe_monthly_price_id, t.stripe_yearly_price_id FROM "user" u LEFT JOIN tier t on t.id = u.tier_id WHERE user_name = $1 ` - postgresSelectUserByToken = ` + postgresSelectUserByTokenQuery = ` SELECT u.id, u.user_name, u.pass, u.role, u.prefs, u.sync_topic, u.provisioned, u.stats_messages, u.stats_emails, u.stats_calls, u.stripe_customer_id, u.stripe_subscription_id, u.stripe_subscription_status, u.stripe_subscription_interval, u.stripe_subscription_paid_until, u.stripe_subscription_cancel_at, u.deleted, t.id, t.code, t.name, t.messages_limit, t.messages_expiry_duration, t.emails_limit, t.calls_limit, t.reservations_limit, t.attachment_file_size_limit, t.attachment_total_size_limit, t.attachment_expiry_duration, t.attachment_bandwidth_limit, t.stripe_monthly_price_id, t.stripe_yearly_price_id FROM "user" u JOIN user_token tk on u.id = tk.user_id LEFT JOIN tier t on t.id = u.tier_id WHERE tk.token = $1 AND (tk.expires = 0 OR tk.expires >= $2) ` - postgresSelectUserByStripeID = ` + postgresSelectUserByStripeIDQuery = ` SELECT u.id, u.user_name, u.pass, u.role, u.prefs, u.sync_topic, u.provisioned, u.stats_messages, u.stats_emails, u.stats_calls, u.stripe_customer_id, u.stripe_subscription_id, u.stripe_subscription_status, u.stripe_subscription_interval, u.stripe_subscription_paid_until, u.stripe_subscription_cancel_at, u.deleted, t.id, t.code, t.name, t.messages_limit, t.messages_expiry_duration, t.emails_limit, t.calls_limit, t.reservations_limit, t.attachment_file_size_limit, t.attachment_total_size_limit, t.attachment_expiry_duration, t.attachment_bandwidth_limit, t.stripe_monthly_price_id, t.stripe_yearly_price_id FROM "user" u LEFT JOIN tier t on t.id = u.tier_id WHERE u.stripe_customer_id = $1 ` - postgresSelectUsernames = ` + postgresSelectUsernamesQuery = ` SELECT user_name FROM "user" ORDER BY @@ -42,41 +42,41 @@ const ( ELSE 2 END, user_name ` - postgresSelectUserCount = `SELECT COUNT(*) FROM "user"` - postgresSelectUserIDFromUsername = `SELECT id FROM "user" WHERE user_name = $1` - postgresInsertUser = `INSERT INTO "user" (id, user_name, pass, role, sync_topic, provisioned, created) VALUES ($1, $2, $3, $4, $5, $6, $7)` - postgresUpdateUserPass = `UPDATE "user" SET pass = $1 WHERE user_name = $2` - postgresUpdateUserRole = `UPDATE "user" SET role = $1 WHERE user_name = $2` - postgresUpdateUserProvisioned = `UPDATE "user" SET provisioned = $1 WHERE user_name = $2` - postgresUpdateUserPrefs = `UPDATE "user" SET prefs = $1 WHERE id = $2` - postgresUpdateUserStats = `UPDATE "user" SET stats_messages = $1, stats_emails = $2, stats_calls = $3 WHERE id = $4` - postgresUpdateUserStatsResetAll = `UPDATE "user" SET stats_messages = 0, stats_emails = 0, stats_calls = 0` - postgresUpdateUserTier = `UPDATE "user" SET tier_id = (SELECT id FROM tier WHERE code = $1) WHERE user_name = $2` - postgresUpdateUserDeleted = `UPDATE "user" SET deleted = $1 WHERE id = $2` - postgresDeleteUser = `DELETE FROM "user" WHERE user_name = $1` - postgresDeleteUserTier = `UPDATE "user" SET tier_id = null WHERE user_name = $1` - postgresDeleteUsersMarked = `DELETE FROM "user" WHERE deleted < $1` + postgresSelectUserCountQuery = `SELECT COUNT(*) FROM "user"` + postgresSelectUserIDFromUsernameQuery = `SELECT id FROM "user" WHERE user_name = $1` + postgresInsertUserQuery = `INSERT INTO "user" (id, user_name, pass, role, sync_topic, provisioned, created) VALUES ($1, $2, $3, $4, $5, $6, $7)` + postgresUpdateUserPassQuery = `UPDATE "user" SET pass = $1 WHERE user_name = $2` + postgresUpdateUserRoleQuery = `UPDATE "user" SET role = $1 WHERE user_name = $2` + postgresUpdateUserProvisionedQuery = `UPDATE "user" SET provisioned = $1 WHERE user_name = $2` + postgresUpdateUserPrefsQuery = `UPDATE "user" SET prefs = $1 WHERE id = $2` + postgresUpdateUserStatsQuery = `UPDATE "user" SET stats_messages = $1, stats_emails = $2, stats_calls = $3 WHERE id = $4` + postgresUpdateUserStatsResetAllQuery = `UPDATE "user" SET stats_messages = 0, stats_emails = 0, stats_calls = 0` + postgresUpdateUserTierQuery = `UPDATE "user" SET tier_id = (SELECT id FROM tier WHERE code = $1) WHERE user_name = $2` + postgresUpdateUserDeletedQuery = `UPDATE "user" SET deleted = $1 WHERE id = $2` + postgresDeleteUserQuery = `DELETE FROM "user" WHERE user_name = $1` + postgresDeleteUserTierQuery = `UPDATE "user" SET tier_id = null WHERE user_name = $1` + postgresDeleteUsersMarkedQuery = `DELETE FROM "user" WHERE deleted < $1` // Access queries - postgresSelectTopicPerms = ` + postgresSelectTopicPermsQuery = ` SELECT read, write FROM user_access a JOIN "user" u ON u.id = a.user_id WHERE (u.user_name = $1 OR u.user_name = $2) AND $3 LIKE a.topic ESCAPE '\' ORDER BY u.user_name DESC, LENGTH(a.topic) DESC, CASE WHEN a.write THEN 1 ELSE 0 END DESC ` - postgresSelectUserAllAccess = ` + postgresSelectUserAllAccessQuery = ` SELECT user_id, topic, read, write, provisioned FROM user_access ORDER BY LENGTH(topic) DESC, CASE WHEN write THEN 1 ELSE 0 END DESC, CASE WHEN read THEN 1 ELSE 0 END DESC, topic ` - postgresSelectUserAccess = ` + postgresSelectUserAccessQuery = ` SELECT topic, read, write, provisioned FROM user_access WHERE user_id = (SELECT id FROM "user" WHERE user_name = $1) ORDER BY LENGTH(topic) DESC, CASE WHEN write THEN 1 ELSE 0 END DESC, CASE WHEN read THEN 1 ELSE 0 END DESC, topic ` - postgresSelectUserReservations = ` + postgresSelectUserReservationsQuery = ` SELECT a_user.topic, a_user.read, a_user.write, a_everyone.read AS everyone_read, a_everyone.write AS everyone_write FROM user_access a_user LEFT JOIN user_access a_everyone ON a_user.topic = a_everyone.topic AND a_everyone.user_id = (SELECT id FROM "user" WHERE user_name = $1) @@ -84,32 +84,32 @@ const ( AND a_user.owner_user_id = (SELECT id FROM "user" WHERE user_name = $2) ORDER BY a_user.topic ` - postgresSelectUserReservationsCount = ` + postgresSelectUserReservationsCountQuery = ` SELECT COUNT(*) FROM user_access WHERE user_id = owner_user_id AND owner_user_id = (SELECT id FROM "user" WHERE user_name = $1) ` - postgresSelectUserReservationsOwner = ` + postgresSelectUserReservationsOwnerQuery = ` SELECT owner_user_id FROM user_access WHERE topic = $1 AND user_id = owner_user_id ` - postgresSelectUserHasReservation = ` + postgresSelectUserHasReservationQuery = ` SELECT COUNT(*) FROM user_access WHERE user_id = owner_user_id AND owner_user_id = (SELECT id FROM "user" WHERE user_name = $1) AND topic = $2 ` - postgresSelectOtherAccessCount = ` + postgresSelectOtherAccessCountQuery = ` SELECT COUNT(*) FROM user_access WHERE (topic = $1 OR $2 LIKE topic ESCAPE '\') AND (owner_user_id IS NULL OR owner_user_id != (SELECT id FROM "user" WHERE user_name = $3)) ` - postgresUpsertUserAccess = ` + postgresUpsertUserAccessQuery = ` INSERT INTO user_access (user_id, topic, read, write, owner_user_id, provisioned) VALUES ( (SELECT id FROM "user" WHERE user_name = $1), @@ -122,38 +122,38 @@ const ( ON CONFLICT (user_id, topic) DO UPDATE SET read=EXCLUDED.read, write=EXCLUDED.write, owner_user_id=EXCLUDED.owner_user_id, provisioned=EXCLUDED.provisioned ` - postgresDeleteUserAccess = ` + postgresDeleteUserAccessQuery = ` DELETE FROM user_access WHERE user_id = (SELECT id FROM "user" WHERE user_name = $1) OR owner_user_id = (SELECT id FROM "user" WHERE user_name = $2) ` - postgresDeleteUserAccessProvisioned = `DELETE FROM user_access WHERE provisioned = true` - postgresDeleteTopicAccess = ` + postgresDeleteUserAccessProvisionedQuery = `DELETE FROM user_access WHERE provisioned = true` + postgresDeleteTopicAccessQuery = ` DELETE FROM user_access WHERE (user_id = (SELECT id FROM "user" WHERE user_name = $1) OR owner_user_id = (SELECT id FROM "user" WHERE user_name = $2)) AND topic = $3 ` - postgresDeleteAllAccess = `DELETE FROM user_access` + postgresDeleteAllAccessQuery = `DELETE FROM user_access` // Token queries - postgresSelectToken = `SELECT token, label, last_access, last_origin, expires, provisioned FROM user_token WHERE user_id = $1 AND token = $2` - postgresSelectTokens = `SELECT token, label, last_access, last_origin, expires, provisioned FROM user_token WHERE user_id = $1` - postgresSelectTokenCount = `SELECT COUNT(*) FROM user_token WHERE user_id = $1` - postgresSelectAllProvisionedTokens = `SELECT token, label, last_access, last_origin, expires, provisioned FROM user_token WHERE provisioned = true` - postgresUpsertToken = ` + postgresSelectTokenQuery = `SELECT token, label, last_access, last_origin, expires, provisioned FROM user_token WHERE user_id = $1 AND token = $2` + postgresSelectTokensQuery = `SELECT token, label, last_access, last_origin, expires, provisioned FROM user_token WHERE user_id = $1` + postgresSelectTokenCountQuery = `SELECT COUNT(*) FROM user_token WHERE user_id = $1` + postgresSelectAllProvisionedTokensQuery = `SELECT token, label, last_access, last_origin, expires, provisioned FROM user_token WHERE provisioned = true` + postgresUpsertTokenQuery = ` INSERT INTO user_token (user_id, token, label, last_access, last_origin, expires, provisioned) VALUES ($1, $2, $3, $4, $5, $6, $7) ON CONFLICT (user_id, token) DO UPDATE SET label = EXCLUDED.label, expires = EXCLUDED.expires, provisioned = EXCLUDED.provisioned ` - postgresUpdateTokenLabel = `UPDATE user_token SET label = $1 WHERE user_id = $2 AND token = $3` - postgresUpdateTokenExpiry = `UPDATE user_token SET expires = $1 WHERE user_id = $2 AND token = $3` - postgresUpdateTokenLastAccess = `UPDATE user_token SET last_access = $1, last_origin = $2 WHERE token = $3` - postgresDeleteToken = `DELETE FROM user_token WHERE user_id = $1 AND token = $2` - postgresDeleteProvisionedToken = `DELETE FROM user_token WHERE token = $1` - postgresDeleteAllToken = `DELETE FROM user_token WHERE user_id = $1` - postgresDeleteExpiredTokens = `DELETE FROM user_token WHERE expires > 0 AND expires < $1` - postgresDeleteExcessTokens = ` + postgresUpdateTokenLabelQuery = `UPDATE user_token SET label = $1 WHERE user_id = $2 AND token = $3` + postgresUpdateTokenExpiryQuery = `UPDATE user_token SET expires = $1 WHERE user_id = $2 AND token = $3` + postgresUpdateTokenLastAccessQuery = `UPDATE user_token SET last_access = $1, last_origin = $2 WHERE token = $3` + postgresDeleteTokenQuery = `DELETE FROM user_token WHERE user_id = $1 AND token = $2` + postgresDeleteProvisionedTokenQuery = `DELETE FROM user_token WHERE token = $1` + postgresDeleteAllTokenQuery = `DELETE FROM user_token WHERE user_id = $1` + postgresDeleteExpiredTokensQuery = `DELETE FROM user_token WHERE expires > 0 AND expires < $1` + postgresDeleteExcessTokensQuery = ` DELETE FROM user_token WHERE user_id = $1 AND (user_id, token) NOT IN ( @@ -166,38 +166,38 @@ const ( ` // Tier queries - postgresInsertTier = ` + postgresInsertTierQuery = ` INSERT INTO tier (id, code, name, messages_limit, messages_expiry_duration, emails_limit, calls_limit, reservations_limit, attachment_file_size_limit, attachment_total_size_limit, attachment_expiry_duration, attachment_bandwidth_limit, stripe_monthly_price_id, stripe_yearly_price_id) VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14) ` - postgresUpdateTier = ` + postgresUpdateTierQuery = ` UPDATE tier SET name = $1, messages_limit = $2, messages_expiry_duration = $3, emails_limit = $4, calls_limit = $5, reservations_limit = $6, attachment_file_size_limit = $7, attachment_total_size_limit = $8, attachment_expiry_duration = $9, attachment_bandwidth_limit = $10, stripe_monthly_price_id = $11, stripe_yearly_price_id = $12 WHERE code = $13 ` - postgresSelectTiers = ` + postgresSelectTiersQuery = ` SELECT id, code, name, messages_limit, messages_expiry_duration, emails_limit, calls_limit, reservations_limit, attachment_file_size_limit, attachment_total_size_limit, attachment_expiry_duration, attachment_bandwidth_limit, stripe_monthly_price_id, stripe_yearly_price_id FROM tier ` - postgresSelectTierByCode = ` + postgresSelectTierByCodeQuery = ` SELECT id, code, name, messages_limit, messages_expiry_duration, emails_limit, calls_limit, reservations_limit, attachment_file_size_limit, attachment_total_size_limit, attachment_expiry_duration, attachment_bandwidth_limit, stripe_monthly_price_id, stripe_yearly_price_id FROM tier WHERE code = $1 ` - postgresSelectTierByPriceID = ` + postgresSelectTierByPriceIDQuery = ` SELECT id, code, name, messages_limit, messages_expiry_duration, emails_limit, calls_limit, reservations_limit, attachment_file_size_limit, attachment_total_size_limit, attachment_expiry_duration, attachment_bandwidth_limit, stripe_monthly_price_id, stripe_yearly_price_id FROM tier WHERE (stripe_monthly_price_id = $1 OR stripe_yearly_price_id = $2) ` - postgresDeleteTier = `DELETE FROM tier WHERE code = $1` + postgresDeleteTierQuery = `DELETE FROM tier WHERE code = $1` // Phone queries - postgresSelectPhoneNumbers = `SELECT phone_number FROM user_phone WHERE user_id = $1` - postgresInsertPhoneNumber = `INSERT INTO user_phone (user_id, phone_number) VALUES ($1, $2)` - postgresDeletePhoneNumber = `DELETE FROM user_phone WHERE user_id = $1 AND phone_number = $2` + postgresSelectPhoneNumbersQuery = `SELECT phone_number FROM user_phone WHERE user_id = $1` + postgresInsertPhoneNumberQuery = `INSERT INTO user_phone (user_id, phone_number) VALUES ($1, $2)` + postgresDeletePhoneNumberQuery = `DELETE FROM user_phone WHERE user_id = $1 AND phone_number = $2` // Billing queries - postgresUpdateBilling = ` + postgresUpdateBillingQuery = ` UPDATE "user" SET stripe_customer_id = $1, stripe_subscription_id = $2, stripe_subscription_status = $3, stripe_subscription_interval = $4, stripe_subscription_paid_until = $5, stripe_subscription_cancel_at = $6 WHERE user_name = $7 @@ -213,71 +213,71 @@ func NewPostgresStore(db *sql.DB) (Store, error) { db: db, queries: storeQueries{ // User queries - selectUserByID: postgresSelectUserByID, - selectUserByName: postgresSelectUserByName, - selectUserByToken: postgresSelectUserByToken, - selectUserByStripeID: postgresSelectUserByStripeID, - selectUsernames: postgresSelectUsernames, - selectUserCount: postgresSelectUserCount, - selectUserIDFromUsername: postgresSelectUserIDFromUsername, - insertUser: postgresInsertUser, - updateUserPass: postgresUpdateUserPass, - updateUserRole: postgresUpdateUserRole, - updateUserProvisioned: postgresUpdateUserProvisioned, - updateUserPrefs: postgresUpdateUserPrefs, - updateUserStats: postgresUpdateUserStats, - updateUserStatsResetAll: postgresUpdateUserStatsResetAll, - updateUserTier: postgresUpdateUserTier, - updateUserDeleted: postgresUpdateUserDeleted, - deleteUser: postgresDeleteUser, - deleteUserTier: postgresDeleteUserTier, - deleteUsersMarked: postgresDeleteUsersMarked, + selectUserByID: postgresSelectUserByIDQuery, + selectUserByName: postgresSelectUserByNameQuery, + selectUserByToken: postgresSelectUserByTokenQuery, + selectUserByStripeID: postgresSelectUserByStripeIDQuery, + selectUsernames: postgresSelectUsernamesQuery, + selectUserCount: postgresSelectUserCountQuery, + selectUserIDFromUsername: postgresSelectUserIDFromUsernameQuery, + insertUser: postgresInsertUserQuery, + updateUserPass: postgresUpdateUserPassQuery, + updateUserRole: postgresUpdateUserRoleQuery, + updateUserProvisioned: postgresUpdateUserProvisionedQuery, + updateUserPrefs: postgresUpdateUserPrefsQuery, + updateUserStats: postgresUpdateUserStatsQuery, + updateUserStatsResetAll: postgresUpdateUserStatsResetAllQuery, + updateUserTier: postgresUpdateUserTierQuery, + updateUserDeleted: postgresUpdateUserDeletedQuery, + deleteUser: postgresDeleteUserQuery, + deleteUserTier: postgresDeleteUserTierQuery, + deleteUsersMarked: postgresDeleteUsersMarkedQuery, // Access queries - selectTopicPerms: postgresSelectTopicPerms, - selectUserAllAccess: postgresSelectUserAllAccess, - selectUserAccess: postgresSelectUserAccess, - selectUserReservations: postgresSelectUserReservations, - selectUserReservationsCount: postgresSelectUserReservationsCount, - selectUserReservationsOwner: postgresSelectUserReservationsOwner, - selectUserHasReservation: postgresSelectUserHasReservation, - selectOtherAccessCount: postgresSelectOtherAccessCount, - upsertUserAccess: postgresUpsertUserAccess, - deleteUserAccess: postgresDeleteUserAccess, - deleteUserAccessProvisioned: postgresDeleteUserAccessProvisioned, - deleteTopicAccess: postgresDeleteTopicAccess, - deleteAllAccess: postgresDeleteAllAccess, + selectTopicPerms: postgresSelectTopicPermsQuery, + selectUserAllAccess: postgresSelectUserAllAccessQuery, + selectUserAccess: postgresSelectUserAccessQuery, + selectUserReservations: postgresSelectUserReservationsQuery, + selectUserReservationsCount: postgresSelectUserReservationsCountQuery, + selectUserReservationsOwner: postgresSelectUserReservationsOwnerQuery, + selectUserHasReservation: postgresSelectUserHasReservationQuery, + selectOtherAccessCount: postgresSelectOtherAccessCountQuery, + upsertUserAccess: postgresUpsertUserAccessQuery, + deleteUserAccess: postgresDeleteUserAccessQuery, + deleteUserAccessProvisioned: postgresDeleteUserAccessProvisionedQuery, + deleteTopicAccess: postgresDeleteTopicAccessQuery, + deleteAllAccess: postgresDeleteAllAccessQuery, // Token queries - selectToken: postgresSelectToken, - selectTokens: postgresSelectTokens, - selectTokenCount: postgresSelectTokenCount, - selectAllProvisionedTokens: postgresSelectAllProvisionedTokens, - upsertToken: postgresUpsertToken, - updateTokenLabel: postgresUpdateTokenLabel, - updateTokenExpiry: postgresUpdateTokenExpiry, - updateTokenLastAccess: postgresUpdateTokenLastAccess, - deleteToken: postgresDeleteToken, - deleteProvisionedToken: postgresDeleteProvisionedToken, - deleteAllToken: postgresDeleteAllToken, - deleteExpiredTokens: postgresDeleteExpiredTokens, - deleteExcessTokens: postgresDeleteExcessTokens, + selectToken: postgresSelectTokenQuery, + selectTokens: postgresSelectTokensQuery, + selectTokenCount: postgresSelectTokenCountQuery, + selectAllProvisionedTokens: postgresSelectAllProvisionedTokensQuery, + upsertToken: postgresUpsertTokenQuery, + updateTokenLabel: postgresUpdateTokenLabelQuery, + updateTokenExpiry: postgresUpdateTokenExpiryQuery, + updateTokenLastAccess: postgresUpdateTokenLastAccessQuery, + deleteToken: postgresDeleteTokenQuery, + deleteProvisionedToken: postgresDeleteProvisionedTokenQuery, + deleteAllToken: postgresDeleteAllTokenQuery, + deleteExpiredTokens: postgresDeleteExpiredTokensQuery, + deleteExcessTokens: postgresDeleteExcessTokensQuery, // Tier queries - insertTier: postgresInsertTier, - selectTiers: postgresSelectTiers, - selectTierByCode: postgresSelectTierByCode, - selectTierByPriceID: postgresSelectTierByPriceID, - updateTier: postgresUpdateTier, - deleteTier: postgresDeleteTier, + insertTier: postgresInsertTierQuery, + selectTiers: postgresSelectTiersQuery, + selectTierByCode: postgresSelectTierByCodeQuery, + selectTierByPriceID: postgresSelectTierByPriceIDQuery, + updateTier: postgresUpdateTierQuery, + deleteTier: postgresDeleteTierQuery, // Phone queries - selectPhoneNumbers: postgresSelectPhoneNumbers, - insertPhoneNumber: postgresInsertPhoneNumber, - deletePhoneNumber: postgresDeletePhoneNumber, + selectPhoneNumbers: postgresSelectPhoneNumbersQuery, + insertPhoneNumber: postgresInsertPhoneNumberQuery, + deletePhoneNumber: postgresDeletePhoneNumberQuery, // Billing queries - updateBilling: postgresUpdateBilling, + updateBilling: postgresUpdateBillingQuery, }, }, nil } diff --git a/user/store_postgres_schema.go b/user/store_postgres_schema.go index c5824970..3684c279 100644 --- a/user/store_postgres_schema.go +++ b/user/store_postgres_schema.go @@ -84,14 +84,14 @@ const ( // Schema table management queries for Postgres const ( - postgresCurrentSchemaVersion = 6 - postgresSelectSchemaVersion = `SELECT version FROM schema_version WHERE store = 'user'` - postgresInsertSchemaVersion = `INSERT INTO schema_version (store, version) VALUES ('user', $1)` + postgresCurrentSchemaVersion = 6 + postgresSelectSchemaVersionQuery = `SELECT version FROM schema_version WHERE store = 'user'` + postgresInsertSchemaVersionQuery = `INSERT INTO schema_version (store, version) VALUES ('user', $1)` ) func setupPostgres(db *sql.DB) error { var schemaVersion int - err := db.QueryRow(postgresSelectSchemaVersion).Scan(&schemaVersion) + err := db.QueryRow(postgresSelectSchemaVersionQuery).Scan(&schemaVersion) if err != nil { return setupNewPostgres(db) } @@ -106,7 +106,7 @@ func setupNewPostgres(db *sql.DB) error { if _, err := db.Exec(postgresCreateTablesQueries); err != nil { return err } - if _, err := db.Exec(postgresInsertSchemaVersion, postgresCurrentSchemaVersion); err != nil { + if _, err := db.Exec(postgresInsertSchemaVersionQuery, postgresCurrentSchemaVersion); err != nil { return err } return nil diff --git a/user/store_sqlite.go b/user/store_sqlite.go index fc5bc7eb..6325e467 100644 --- a/user/store_sqlite.go +++ b/user/store_sqlite.go @@ -8,32 +8,32 @@ import ( const ( // User queries - sqliteSelectUserByID = ` + sqliteSelectUserByIDQuery = ` SELECT u.id, u.user, u.pass, u.role, u.prefs, u.sync_topic, u.provisioned, u.stats_messages, u.stats_emails, u.stats_calls, u.stripe_customer_id, u.stripe_subscription_id, u.stripe_subscription_status, u.stripe_subscription_interval, u.stripe_subscription_paid_until, u.stripe_subscription_cancel_at, deleted, t.id, t.code, t.name, t.messages_limit, t.messages_expiry_duration, t.emails_limit, t.calls_limit, t.reservations_limit, t.attachment_file_size_limit, t.attachment_total_size_limit, t.attachment_expiry_duration, t.attachment_bandwidth_limit, t.stripe_monthly_price_id, t.stripe_yearly_price_id FROM user u LEFT JOIN tier t on t.id = u.tier_id WHERE u.id = ? ` - sqliteSelectUserByName = ` + sqliteSelectUserByNameQuery = ` SELECT u.id, u.user, u.pass, u.role, u.prefs, u.sync_topic, u.provisioned, u.stats_messages, u.stats_emails, u.stats_calls, u.stripe_customer_id, u.stripe_subscription_id, u.stripe_subscription_status, u.stripe_subscription_interval, u.stripe_subscription_paid_until, u.stripe_subscription_cancel_at, deleted, t.id, t.code, t.name, t.messages_limit, t.messages_expiry_duration, t.emails_limit, t.calls_limit, t.reservations_limit, t.attachment_file_size_limit, t.attachment_total_size_limit, t.attachment_expiry_duration, t.attachment_bandwidth_limit, t.stripe_monthly_price_id, t.stripe_yearly_price_id FROM user u LEFT JOIN tier t on t.id = u.tier_id WHERE user = ? ` - sqliteSelectUserByToken = ` + sqliteSelectUserByTokenQuery = ` SELECT u.id, u.user, u.pass, u.role, u.prefs, u.sync_topic, u.provisioned, u.stats_messages, u.stats_emails, u.stats_calls, u.stripe_customer_id, u.stripe_subscription_id, u.stripe_subscription_status, u.stripe_subscription_interval, u.stripe_subscription_paid_until, u.stripe_subscription_cancel_at, deleted, t.id, t.code, t.name, t.messages_limit, t.messages_expiry_duration, t.emails_limit, t.calls_limit, t.reservations_limit, t.attachment_file_size_limit, t.attachment_total_size_limit, t.attachment_expiry_duration, t.attachment_bandwidth_limit, t.stripe_monthly_price_id, t.stripe_yearly_price_id FROM user u JOIN user_token tk on u.id = tk.user_id LEFT JOIN tier t on t.id = u.tier_id WHERE tk.token = ? AND (tk.expires = 0 OR tk.expires >= ?) ` - sqliteSelectUserByStripeID = ` + sqliteSelectUserByStripeIDQuery = ` SELECT u.id, u.user, u.pass, u.role, u.prefs, u.sync_topic, u.provisioned, u.stats_messages, u.stats_emails, u.stats_calls, u.stripe_customer_id, u.stripe_subscription_id, u.stripe_subscription_status, u.stripe_subscription_interval, u.stripe_subscription_paid_until, u.stripe_subscription_cancel_at, deleted, t.id, t.code, t.name, t.messages_limit, t.messages_expiry_duration, t.emails_limit, t.calls_limit, t.reservations_limit, t.attachment_file_size_limit, t.attachment_total_size_limit, t.attachment_expiry_duration, t.attachment_bandwidth_limit, t.stripe_monthly_price_id, t.stripe_yearly_price_id FROM user u LEFT JOIN tier t on t.id = u.tier_id WHERE u.stripe_customer_id = ? ` - sqliteSelectUsernames = ` + sqliteSelectUsernamesQuery = ` SELECT user FROM user ORDER BY @@ -43,41 +43,41 @@ const ( ELSE 2 END, user ` - sqliteSelectUserCount = `SELECT COUNT(*) FROM user` - sqliteSelectUserIDFromUsername = `SELECT id FROM user WHERE user = ?` - sqliteInsertUser = `INSERT INTO user (id, user, pass, role, sync_topic, provisioned, created) VALUES (?, ?, ?, ?, ?, ?, ?)` - sqliteUpdateUserPass = `UPDATE user SET pass = ? WHERE user = ?` - sqliteUpdateUserRole = `UPDATE user SET role = ? WHERE user = ?` - sqliteUpdateUserProvisioned = `UPDATE user SET provisioned = ? WHERE user = ?` - sqliteUpdateUserPrefs = `UPDATE user SET prefs = ? WHERE id = ?` - sqliteUpdateUserStats = `UPDATE user SET stats_messages = ?, stats_emails = ?, stats_calls = ? WHERE id = ?` - sqliteUpdateUserStatsResetAll = `UPDATE user SET stats_messages = 0, stats_emails = 0, stats_calls = 0` - sqliteUpdateUserTier = `UPDATE user SET tier_id = (SELECT id FROM tier WHERE code = ?) WHERE user = ?` - sqliteUpdateUserDeleted = `UPDATE user SET deleted = ? WHERE id = ?` - sqliteDeleteUser = `DELETE FROM user WHERE user = ?` - sqliteDeleteUserTier = `UPDATE user SET tier_id = null WHERE user = ?` - sqliteDeleteUsersMarked = `DELETE FROM user WHERE deleted < ?` + sqliteSelectUserCountQuery = `SELECT COUNT(*) FROM user` + sqliteSelectUserIDFromUsernameQuery = `SELECT id FROM user WHERE user = ?` + sqliteInsertUserQuery = `INSERT INTO user (id, user, pass, role, sync_topic, provisioned, created) VALUES (?, ?, ?, ?, ?, ?, ?)` + sqliteUpdateUserPassQuery = `UPDATE user SET pass = ? WHERE user = ?` + sqliteUpdateUserRoleQuery = `UPDATE user SET role = ? WHERE user = ?` + sqliteUpdateUserProvisionedQuery = `UPDATE user SET provisioned = ? WHERE user = ?` + sqliteUpdateUserPrefsQuery = `UPDATE user SET prefs = ? WHERE id = ?` + sqliteUpdateUserStatsQuery = `UPDATE user SET stats_messages = ?, stats_emails = ?, stats_calls = ? WHERE id = ?` + sqliteUpdateUserStatsResetAllQuery = `UPDATE user SET stats_messages = 0, stats_emails = 0, stats_calls = 0` + sqliteUpdateUserTierQuery = `UPDATE user SET tier_id = (SELECT id FROM tier WHERE code = ?) WHERE user = ?` + sqliteUpdateUserDeletedQuery = `UPDATE user SET deleted = ? WHERE id = ?` + sqliteDeleteUserQuery = `DELETE FROM user WHERE user = ?` + sqliteDeleteUserTierQuery = `UPDATE user SET tier_id = null WHERE user = ?` + sqliteDeleteUsersMarkedQuery = `DELETE FROM user WHERE deleted < ?` // Access queries - sqliteSelectTopicPerms = ` + sqliteSelectTopicPermsQuery = ` SELECT read, write FROM user_access a JOIN user u ON u.id = a.user_id WHERE (u.user = ? OR u.user = ?) AND ? LIKE a.topic ESCAPE '\' ORDER BY u.user DESC, LENGTH(a.topic) DESC, a.write DESC ` - sqliteSelectUserAllAccess = ` + sqliteSelectUserAllAccessQuery = ` SELECT user_id, topic, read, write, provisioned FROM user_access ORDER BY LENGTH(topic) DESC, write DESC, read DESC, topic ` - sqliteSelectUserAccess = ` + sqliteSelectUserAccessQuery = ` SELECT topic, read, write, provisioned FROM user_access WHERE user_id = (SELECT id FROM user WHERE user = ?) ORDER BY LENGTH(topic) DESC, write DESC, read DESC, topic ` - sqliteSelectUserReservations = ` + sqliteSelectUserReservationsQuery = ` SELECT a_user.topic, a_user.read, a_user.write, a_everyone.read AS everyone_read, a_everyone.write AS everyone_write FROM user_access a_user LEFT JOIN user_access a_everyone ON a_user.topic = a_everyone.topic AND a_everyone.user_id = (SELECT id FROM user WHERE user = ?) @@ -85,69 +85,69 @@ const ( AND a_user.owner_user_id = (SELECT id FROM user WHERE user = ?) ORDER BY a_user.topic ` - sqliteSelectUserReservationsCount = ` + sqliteSelectUserReservationsCountQuery = ` SELECT COUNT(*) FROM user_access WHERE user_id = owner_user_id AND owner_user_id = (SELECT id FROM user WHERE user = ?) ` - sqliteSelectUserReservationsOwner = ` + sqliteSelectUserReservationsOwnerQuery = ` SELECT owner_user_id FROM user_access WHERE topic = ? AND user_id = owner_user_id ` - sqliteSelectUserHasReservation = ` + sqliteSelectUserHasReservationQuery = ` SELECT COUNT(*) FROM user_access WHERE user_id = owner_user_id AND owner_user_id = (SELECT id FROM user WHERE user = ?) AND topic = ? ` - sqliteSelectOtherAccessCount = ` + sqliteSelectOtherAccessCountQuery = ` SELECT COUNT(*) FROM user_access WHERE (topic = ? OR ? LIKE topic ESCAPE '\') AND (owner_user_id IS NULL OR owner_user_id != (SELECT id FROM user WHERE user = ?)) ` - sqliteUpsertUserAccess = ` + sqliteUpsertUserAccessQuery = ` INSERT INTO user_access (user_id, topic, read, write, owner_user_id, provisioned) VALUES ((SELECT id FROM user WHERE user = ?), ?, ?, ?, (SELECT IIF(?='',NULL,(SELECT id FROM user WHERE user=?))), ?) ON CONFLICT (user_id, topic) DO UPDATE SET read=excluded.read, write=excluded.write, owner_user_id=excluded.owner_user_id, provisioned=excluded.provisioned ` - sqliteDeleteUserAccess = ` + sqliteDeleteUserAccessQuery = ` DELETE FROM user_access WHERE user_id = (SELECT id FROM user WHERE user = ?) OR owner_user_id = (SELECT id FROM user WHERE user = ?) ` - sqliteDeleteUserAccessProvisioned = `DELETE FROM user_access WHERE provisioned = 1` - sqliteDeleteTopicAccess = ` + sqliteDeleteUserAccessProvisionedQuery = `DELETE FROM user_access WHERE provisioned = 1` + sqliteDeleteTopicAccessQuery = ` DELETE FROM user_access WHERE (user_id = (SELECT id FROM user WHERE user = ?) OR owner_user_id = (SELECT id FROM user WHERE user = ?)) AND topic = ? ` - sqliteDeleteAllAccess = `DELETE FROM user_access` + sqliteDeleteAllAccessQuery = `DELETE FROM user_access` // Token queries - sqliteSelectToken = `SELECT token, label, last_access, last_origin, expires, provisioned FROM user_token WHERE user_id = ? AND token = ?` - sqliteSelectTokens = `SELECT token, label, last_access, last_origin, expires, provisioned FROM user_token WHERE user_id = ?` - sqliteSelectTokenCount = `SELECT COUNT(*) FROM user_token WHERE user_id = ?` - sqliteSelectAllProvisionedTokens = `SELECT token, label, last_access, last_origin, expires, provisioned FROM user_token WHERE provisioned = 1` - sqliteUpsertToken = ` + sqliteSelectTokenQuery = `SELECT token, label, last_access, last_origin, expires, provisioned FROM user_token WHERE user_id = ? AND token = ?` + sqliteSelectTokensQuery = `SELECT token, label, last_access, last_origin, expires, provisioned FROM user_token WHERE user_id = ?` + sqliteSelectTokenCountQuery = `SELECT COUNT(*) FROM user_token WHERE user_id = ?` + sqliteSelectAllProvisionedTokensQuery = `SELECT token, label, last_access, last_origin, expires, provisioned FROM user_token WHERE provisioned = 1` + sqliteUpsertTokenQuery = ` INSERT INTO user_token (user_id, token, label, last_access, last_origin, expires, provisioned) VALUES (?, ?, ?, ?, ?, ?, ?) ON CONFLICT (user_id, token) DO UPDATE SET label = excluded.label, expires = excluded.expires, provisioned = excluded.provisioned; ` - sqliteUpdateTokenLabel = `UPDATE user_token SET label = ? WHERE user_id = ? AND token = ?` - sqliteUpdateTokenExpiry = `UPDATE user_token SET expires = ? WHERE user_id = ? AND token = ?` - sqliteUpdateTokenLastAccess = `UPDATE user_token SET last_access = ?, last_origin = ? WHERE token = ?` - sqliteDeleteToken = `DELETE FROM user_token WHERE user_id = ? AND token = ?` - sqliteDeleteProvisionedToken = `DELETE FROM user_token WHERE token = ?` - sqliteDeleteAllToken = `DELETE FROM user_token WHERE user_id = ?` - sqliteDeleteExpiredTokens = `DELETE FROM user_token WHERE expires > 0 AND expires < ?` - sqliteDeleteExcessTokens = ` + sqliteUpdateTokenLabelQuery = `UPDATE user_token SET label = ? WHERE user_id = ? AND token = ?` + sqliteUpdateTokenExpiryQuery = `UPDATE user_token SET expires = ? WHERE user_id = ? AND token = ?` + sqliteUpdateTokenLastAccessQuery = `UPDATE user_token SET last_access = ?, last_origin = ? WHERE token = ?` + sqliteDeleteTokenQuery = `DELETE FROM user_token WHERE user_id = ? AND token = ?` + sqliteDeleteProvisionedTokenQuery = `DELETE FROM user_token WHERE token = ?` + sqliteDeleteAllTokenQuery = `DELETE FROM user_token WHERE user_id = ?` + sqliteDeleteExpiredTokensQuery = `DELETE FROM user_token WHERE expires > 0 AND expires < ?` + sqliteDeleteExcessTokensQuery = ` DELETE FROM user_token WHERE user_id = ? AND (user_id, token) NOT IN ( @@ -160,38 +160,38 @@ const ( ` // Tier queries - sqliteInsertTier = ` + sqliteInsertTierQuery = ` INSERT INTO tier (id, code, name, messages_limit, messages_expiry_duration, emails_limit, calls_limit, reservations_limit, attachment_file_size_limit, attachment_total_size_limit, attachment_expiry_duration, attachment_bandwidth_limit, stripe_monthly_price_id, stripe_yearly_price_id) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ` - sqliteUpdateTier = ` + sqliteUpdateTierQuery = ` UPDATE tier SET name = ?, messages_limit = ?, messages_expiry_duration = ?, emails_limit = ?, calls_limit = ?, reservations_limit = ?, attachment_file_size_limit = ?, attachment_total_size_limit = ?, attachment_expiry_duration = ?, attachment_bandwidth_limit = ?, stripe_monthly_price_id = ?, stripe_yearly_price_id = ? WHERE code = ? ` - sqliteSelectTiers = ` + sqliteSelectTiersQuery = ` SELECT id, code, name, messages_limit, messages_expiry_duration, emails_limit, calls_limit, reservations_limit, attachment_file_size_limit, attachment_total_size_limit, attachment_expiry_duration, attachment_bandwidth_limit, stripe_monthly_price_id, stripe_yearly_price_id FROM tier ` - sqliteSelectTierByCode = ` + sqliteSelectTierByCodeQuery = ` SELECT id, code, name, messages_limit, messages_expiry_duration, emails_limit, calls_limit, reservations_limit, attachment_file_size_limit, attachment_total_size_limit, attachment_expiry_duration, attachment_bandwidth_limit, stripe_monthly_price_id, stripe_yearly_price_id FROM tier WHERE code = ? ` - sqliteSelectTierByPriceID = ` + sqliteSelectTierByPriceIDQuery = ` SELECT id, code, name, messages_limit, messages_expiry_duration, emails_limit, calls_limit, reservations_limit, attachment_file_size_limit, attachment_total_size_limit, attachment_expiry_duration, attachment_bandwidth_limit, stripe_monthly_price_id, stripe_yearly_price_id FROM tier WHERE (stripe_monthly_price_id = ? OR stripe_yearly_price_id = ?) ` - sqliteDeleteTier = `DELETE FROM tier WHERE code = ?` + sqliteDeleteTierQuery = `DELETE FROM tier WHERE code = ?` // Phone queries - sqliteSelectPhoneNumbers = `SELECT phone_number FROM user_phone WHERE user_id = ?` - sqliteInsertPhoneNumber = `INSERT INTO user_phone (user_id, phone_number) VALUES (?, ?)` - sqliteDeletePhoneNumber = `DELETE FROM user_phone WHERE user_id = ? AND phone_number = ?` + sqliteSelectPhoneNumbersQuery = `SELECT phone_number FROM user_phone WHERE user_id = ?` + sqliteInsertPhoneNumberQuery = `INSERT INTO user_phone (user_id, phone_number) VALUES (?, ?)` + sqliteDeletePhoneNumberQuery = `DELETE FROM user_phone WHERE user_id = ? AND phone_number = ?` // Billing queries - sqliteUpdateBilling = ` + sqliteUpdateBillingQuery = ` UPDATE user SET stripe_customer_id = ?, stripe_subscription_id = ?, stripe_subscription_status = ?, stripe_subscription_interval = ?, stripe_subscription_paid_until = ?, stripe_subscription_cancel_at = ? WHERE user = ? @@ -213,61 +213,61 @@ func NewSQLiteStore(filename, startupQueries string) (Store, error) { return &commonStore{ db: db, queries: storeQueries{ - selectUserByID: sqliteSelectUserByID, - selectUserByName: sqliteSelectUserByName, - selectUserByToken: sqliteSelectUserByToken, - selectUserByStripeID: sqliteSelectUserByStripeID, - selectUsernames: sqliteSelectUsernames, - selectUserCount: sqliteSelectUserCount, - selectUserIDFromUsername: sqliteSelectUserIDFromUsername, - insertUser: sqliteInsertUser, - updateUserPass: sqliteUpdateUserPass, - updateUserRole: sqliteUpdateUserRole, - updateUserProvisioned: sqliteUpdateUserProvisioned, - updateUserPrefs: sqliteUpdateUserPrefs, - updateUserStats: sqliteUpdateUserStats, - updateUserStatsResetAll: sqliteUpdateUserStatsResetAll, - updateUserTier: sqliteUpdateUserTier, - updateUserDeleted: sqliteUpdateUserDeleted, - deleteUser: sqliteDeleteUser, - deleteUserTier: sqliteDeleteUserTier, - deleteUsersMarked: sqliteDeleteUsersMarked, - selectTopicPerms: sqliteSelectTopicPerms, - selectUserAllAccess: sqliteSelectUserAllAccess, - selectUserAccess: sqliteSelectUserAccess, - selectUserReservations: sqliteSelectUserReservations, - selectUserReservationsCount: sqliteSelectUserReservationsCount, - selectUserReservationsOwner: sqliteSelectUserReservationsOwner, - selectUserHasReservation: sqliteSelectUserHasReservation, - selectOtherAccessCount: sqliteSelectOtherAccessCount, - upsertUserAccess: sqliteUpsertUserAccess, - deleteUserAccess: sqliteDeleteUserAccess, - deleteUserAccessProvisioned: sqliteDeleteUserAccessProvisioned, - deleteTopicAccess: sqliteDeleteTopicAccess, - deleteAllAccess: sqliteDeleteAllAccess, - selectToken: sqliteSelectToken, - selectTokens: sqliteSelectTokens, - selectTokenCount: sqliteSelectTokenCount, - selectAllProvisionedTokens: sqliteSelectAllProvisionedTokens, - upsertToken: sqliteUpsertToken, - updateTokenLabel: sqliteUpdateTokenLabel, - updateTokenExpiry: sqliteUpdateTokenExpiry, - updateTokenLastAccess: sqliteUpdateTokenLastAccess, - deleteToken: sqliteDeleteToken, - deleteProvisionedToken: sqliteDeleteProvisionedToken, - deleteAllToken: sqliteDeleteAllToken, - deleteExpiredTokens: sqliteDeleteExpiredTokens, - deleteExcessTokens: sqliteDeleteExcessTokens, - insertTier: sqliteInsertTier, - selectTiers: sqliteSelectTiers, - selectTierByCode: sqliteSelectTierByCode, - selectTierByPriceID: sqliteSelectTierByPriceID, - updateTier: sqliteUpdateTier, - deleteTier: sqliteDeleteTier, - selectPhoneNumbers: sqliteSelectPhoneNumbers, - insertPhoneNumber: sqliteInsertPhoneNumber, - deletePhoneNumber: sqliteDeletePhoneNumber, - updateBilling: sqliteUpdateBilling, + selectUserByID: sqliteSelectUserByIDQuery, + selectUserByName: sqliteSelectUserByNameQuery, + selectUserByToken: sqliteSelectUserByTokenQuery, + selectUserByStripeID: sqliteSelectUserByStripeIDQuery, + selectUsernames: sqliteSelectUsernamesQuery, + selectUserCount: sqliteSelectUserCountQuery, + selectUserIDFromUsername: sqliteSelectUserIDFromUsernameQuery, + insertUser: sqliteInsertUserQuery, + updateUserPass: sqliteUpdateUserPassQuery, + updateUserRole: sqliteUpdateUserRoleQuery, + updateUserProvisioned: sqliteUpdateUserProvisionedQuery, + updateUserPrefs: sqliteUpdateUserPrefsQuery, + updateUserStats: sqliteUpdateUserStatsQuery, + updateUserStatsResetAll: sqliteUpdateUserStatsResetAllQuery, + updateUserTier: sqliteUpdateUserTierQuery, + updateUserDeleted: sqliteUpdateUserDeletedQuery, + deleteUser: sqliteDeleteUserQuery, + deleteUserTier: sqliteDeleteUserTierQuery, + deleteUsersMarked: sqliteDeleteUsersMarkedQuery, + selectTopicPerms: sqliteSelectTopicPermsQuery, + selectUserAllAccess: sqliteSelectUserAllAccessQuery, + selectUserAccess: sqliteSelectUserAccessQuery, + selectUserReservations: sqliteSelectUserReservationsQuery, + selectUserReservationsCount: sqliteSelectUserReservationsCountQuery, + selectUserReservationsOwner: sqliteSelectUserReservationsOwnerQuery, + selectUserHasReservation: sqliteSelectUserHasReservationQuery, + selectOtherAccessCount: sqliteSelectOtherAccessCountQuery, + upsertUserAccess: sqliteUpsertUserAccessQuery, + deleteUserAccess: sqliteDeleteUserAccessQuery, + deleteUserAccessProvisioned: sqliteDeleteUserAccessProvisionedQuery, + deleteTopicAccess: sqliteDeleteTopicAccessQuery, + deleteAllAccess: sqliteDeleteAllAccessQuery, + selectToken: sqliteSelectTokenQuery, + selectTokens: sqliteSelectTokensQuery, + selectTokenCount: sqliteSelectTokenCountQuery, + selectAllProvisionedTokens: sqliteSelectAllProvisionedTokensQuery, + upsertToken: sqliteUpsertTokenQuery, + updateTokenLabel: sqliteUpdateTokenLabelQuery, + updateTokenExpiry: sqliteUpdateTokenExpiryQuery, + updateTokenLastAccess: sqliteUpdateTokenLastAccessQuery, + deleteToken: sqliteDeleteTokenQuery, + deleteProvisionedToken: sqliteDeleteProvisionedTokenQuery, + deleteAllToken: sqliteDeleteAllTokenQuery, + deleteExpiredTokens: sqliteDeleteExpiredTokensQuery, + deleteExcessTokens: sqliteDeleteExcessTokensQuery, + insertTier: sqliteInsertTierQuery, + selectTiers: sqliteSelectTiersQuery, + selectTierByCode: sqliteSelectTierByCodeQuery, + selectTierByPriceID: sqliteSelectTierByPriceIDQuery, + updateTier: sqliteUpdateTierQuery, + deleteTier: sqliteDeleteTierQuery, + selectPhoneNumbers: sqliteSelectPhoneNumbersQuery, + insertPhoneNumber: sqliteInsertPhoneNumberQuery, + deletePhoneNumber: sqliteDeletePhoneNumberQuery, + updateBilling: sqliteUpdateBillingQuery, }, }, nil } diff --git a/user/store_sqlite_schema.go b/user/store_sqlite_schema.go index f8e65cb6..4fbd0c02 100644 --- a/user/store_sqlite_schema.go +++ b/user/store_sqlite_schema.go @@ -103,8 +103,8 @@ const ( // Schema version table management for SQLite const ( sqliteCurrentSchemaVersion = 6 - sqliteInsertSchemaVersion = `INSERT INTO schemaVersion VALUES (1, ?)` - sqliteUpdateSchemaVersion = `UPDATE schemaVersion SET version = ? WHERE id = 1` + sqliteInsertSchemaVersionQuery = `INSERT INTO schemaVersion VALUES (1, ?)` + sqliteUpdateSchemaVersionQuery = `UPDATE schemaVersion SET version = ? WHERE id = 1` sqliteSelectSchemaVersionQuery = `SELECT version FROM schemaVersion WHERE id = 1` ) @@ -179,12 +179,12 @@ const ( VALUES ('u_everyone', '*', '', 'anonymous', '', UNIXEPOCH()) ON CONFLICT (id) DO NOTHING; ` - sqliteMigrate1To2SelectAllOldUsernamesNoTx = `SELECT user FROM user_old` - sqliteMigrate1To2InsertUserNoTx = ` + sqliteMigrate1To2SelectAllOldUsernamesNoTxQuery = `SELECT user FROM user_old` + sqliteMigrate1To2InsertUserNoTxQuery = ` INSERT INTO user (id, user, pass, role, sync_topic, created) SELECT ?, user, pass, role, ?, UNIXEPOCH() FROM user_old WHERE user = ? ` - sqliteMigrate1To2InsertFromOldTablesAndDropNoTx = ` + sqliteMigrate1To2InsertFromOldTablesAndDropNoTxQuery = ` INSERT INTO user_access (user_id, topic, read, write) SELECT u.id, a.topic, a.read, a.write FROM user u @@ -352,7 +352,7 @@ func setupNewSQLite(db *sql.DB) error { if _, err := db.Exec(sqliteCreateTablesQueries); err != nil { return err } - if _, err := db.Exec(sqliteInsertSchemaVersion, sqliteCurrentSchemaVersion); err != nil { + if _, err := db.Exec(sqliteInsertSchemaVersionQuery, sqliteCurrentSchemaVersion); err != nil { return err } return nil @@ -382,7 +382,7 @@ func sqliteMigrateFrom1(db *sql.DB) error { return err } // Insert users from user_old into new user table, with ID and sync_topic - rows, err := tx.Query(sqliteMigrate1To2SelectAllOldUsernamesNoTx) + rows, err := tx.Query(sqliteMigrate1To2SelectAllOldUsernamesNoTxQuery) if err != nil { return err } @@ -401,15 +401,15 @@ func sqliteMigrateFrom1(db *sql.DB) error { for _, username := range usernames { userID := util.RandomStringPrefix(userIDPrefix, userIDLength) syncTopic := util.RandomStringPrefix(syncTopicPrefix, syncTopicLength) - if _, err := tx.Exec(sqliteMigrate1To2InsertUserNoTx, userID, syncTopic, username); err != nil { + if _, err := tx.Exec(sqliteMigrate1To2InsertUserNoTxQuery, userID, syncTopic, username); err != nil { return err } } // Migrate old "access" table to "user_access" and drop "access" and "user_old" - if _, err := tx.Exec(sqliteMigrate1To2InsertFromOldTablesAndDropNoTx); err != nil { + if _, err := tx.Exec(sqliteMigrate1To2InsertFromOldTablesAndDropNoTxQuery); err != nil { return err } - if _, err := tx.Exec(sqliteUpdateSchemaVersion, 2); err != nil { + if _, err := tx.Exec(sqliteUpdateSchemaVersionQuery, 2); err != nil { return err } if err := tx.Commit(); err != nil { @@ -428,7 +428,7 @@ func sqliteMigrateFrom2(db *sql.DB) error { if _, err := tx.Exec(sqliteMigrate2To3UpdateQueries); err != nil { return err } - if _, err := tx.Exec(sqliteUpdateSchemaVersion, 3); err != nil { + if _, err := tx.Exec(sqliteUpdateSchemaVersionQuery, 3); err != nil { return err } return tx.Commit() @@ -444,7 +444,7 @@ func sqliteMigrateFrom3(db *sql.DB) error { if _, err := tx.Exec(sqliteMigrate3To4UpdateQueries); err != nil { return err } - if _, err := tx.Exec(sqliteUpdateSchemaVersion, 4); err != nil { + if _, err := tx.Exec(sqliteUpdateSchemaVersionQuery, 4); err != nil { return err } return tx.Commit() @@ -460,7 +460,7 @@ func sqliteMigrateFrom4(db *sql.DB) error { if _, err := tx.Exec(sqliteMigrate4To5UpdateQueries); err != nil { return err } - if _, err := tx.Exec(sqliteUpdateSchemaVersion, 5); err != nil { + if _, err := tx.Exec(sqliteUpdateSchemaVersionQuery, 5); err != nil { return err } return tx.Commit() @@ -476,7 +476,7 @@ func sqliteMigrateFrom5(db *sql.DB) error { if _, err := tx.Exec(sqliteMigrate5To6UpdateQueries); err != nil { return err } - if _, err := tx.Exec(sqliteUpdateSchemaVersion, 6); err != nil { + if _, err := tx.Exec(sqliteUpdateSchemaVersionQuery, 6); err != nil { return err } return tx.Commit() diff --git a/webpush/store_postgres.go b/webpush/store_postgres.go index c6366367..831b50f3 100644 --- a/webpush/store_postgres.go +++ b/webpush/store_postgres.go @@ -6,7 +6,7 @@ import ( ) const ( - pgCreateTablesQuery = ` + postgresCreateTablesQuery = ` CREATE TABLE IF NOT EXISTS webpush_subscription ( id TEXT PRIMARY KEY, endpoint TEXT NOT NULL UNIQUE, @@ -30,42 +30,42 @@ const ( ); ` - pgSelectSubscriptionIDByEndpoint = `SELECT id FROM webpush_subscription WHERE endpoint = $1` - pgSelectSubscriptionCountBySubscriberIP = `SELECT COUNT(*) FROM webpush_subscription WHERE subscriber_ip = $1` - pgSelectSubscriptionsForTopicQuery = ` + postgresSelectSubscriptionIDByEndpointQuery = `SELECT id FROM webpush_subscription WHERE endpoint = $1` + postgresSelectSubscriptionCountBySubscriberIPQuery = `SELECT COUNT(*) FROM webpush_subscription WHERE subscriber_ip = $1` + postgresSelectSubscriptionsForTopicQuery = ` SELECT s.id, s.endpoint, s.key_auth, s.key_p256dh, s.user_id FROM webpush_subscription_topic st JOIN webpush_subscription s ON s.id = st.subscription_id WHERE st.topic = $1 ORDER BY s.endpoint ` - pgSelectSubscriptionsExpiringSoonQuery = ` + postgresSelectSubscriptionsExpiringSoonQuery = ` SELECT id, endpoint, key_auth, key_p256dh, user_id FROM webpush_subscription WHERE warned_at = 0 AND updated_at <= $1 ` - pgInsertSubscriptionQuery = ` + postgresInsertSubscriptionQuery = ` INSERT INTO webpush_subscription (id, endpoint, key_auth, key_p256dh, user_id, subscriber_ip, updated_at, warned_at) VALUES ($1, $2, $3, $4, $5, $6, $7, $8) ON CONFLICT (endpoint) DO UPDATE SET key_auth = excluded.key_auth, key_p256dh = excluded.key_p256dh, user_id = excluded.user_id, subscriber_ip = excluded.subscriber_ip, updated_at = excluded.updated_at, warned_at = excluded.warned_at ` - pgUpdateSubscriptionWarningSentQuery = `UPDATE webpush_subscription SET warned_at = $1 WHERE id = $2` - pgUpdateSubscriptionUpdatedAtQuery = `UPDATE webpush_subscription SET updated_at = $1 WHERE endpoint = $2` - pgDeleteSubscriptionByEndpointQuery = `DELETE FROM webpush_subscription WHERE endpoint = $1` - pgDeleteSubscriptionByUserIDQuery = `DELETE FROM webpush_subscription WHERE user_id = $1` - pgDeleteSubscriptionByAgeQuery = `DELETE FROM webpush_subscription WHERE updated_at <= $1` + postgresUpdateSubscriptionWarningSentQuery = `UPDATE webpush_subscription SET warned_at = $1 WHERE id = $2` + postgresUpdateSubscriptionUpdatedAtQuery = `UPDATE webpush_subscription SET updated_at = $1 WHERE endpoint = $2` + postgresDeleteSubscriptionByEndpointQuery = `DELETE FROM webpush_subscription WHERE endpoint = $1` + postgresDeleteSubscriptionByUserIDQuery = `DELETE FROM webpush_subscription WHERE user_id = $1` + postgresDeleteSubscriptionByAgeQuery = `DELETE FROM webpush_subscription WHERE updated_at <= $1` - pgInsertSubscriptionTopicQuery = `INSERT INTO webpush_subscription_topic (subscription_id, topic) VALUES ($1, $2)` - pgDeleteSubscriptionTopicAllQuery = `DELETE FROM webpush_subscription_topic WHERE subscription_id = $1` - pgDeleteSubscriptionTopicWithoutSubscription = `DELETE FROM webpush_subscription_topic WHERE subscription_id NOT IN (SELECT id FROM webpush_subscription)` + postgresInsertSubscriptionTopicQuery = `INSERT INTO webpush_subscription_topic (subscription_id, topic) VALUES ($1, $2)` + postgresDeleteSubscriptionTopicAllQuery = `DELETE FROM webpush_subscription_topic WHERE subscription_id = $1` + postgresDeleteSubscriptionTopicWithoutSubscriptionQuery = `DELETE FROM webpush_subscription_topic WHERE subscription_id NOT IN (SELECT id FROM webpush_subscription)` ) // PostgreSQL schema management queries const ( - pgCurrentSchemaVersion = 1 - pgInsertSchemaVersion = `INSERT INTO schema_version (store, version) VALUES ('webpush', $1)` - pgSelectSchemaVersionQuery = `SELECT version FROM schema_version WHERE store = 'webpush'` + pgCurrentSchemaVersion = 1 + postgresInsertSchemaVersionQuery = `INSERT INTO schema_version (store, version) VALUES ('webpush', $1)` + postgresSelectSchemaVersionQuery = `SELECT version FROM schema_version WHERE store = 'webpush'` ) // NewPostgresStore creates a new PostgreSQL-backed web push store using an existing database connection pool. @@ -76,26 +76,26 @@ func NewPostgresStore(db *sql.DB) (Store, error) { return &commonStore{ db: db, queries: storeQueries{ - selectSubscriptionIDByEndpoint: pgSelectSubscriptionIDByEndpoint, - selectSubscriptionCountBySubscriberIP: pgSelectSubscriptionCountBySubscriberIP, - selectSubscriptionsForTopic: pgSelectSubscriptionsForTopicQuery, - selectSubscriptionsExpiringSoon: pgSelectSubscriptionsExpiringSoonQuery, - insertSubscription: pgInsertSubscriptionQuery, - updateSubscriptionWarningSent: pgUpdateSubscriptionWarningSentQuery, - updateSubscriptionUpdatedAt: pgUpdateSubscriptionUpdatedAtQuery, - deleteSubscriptionByEndpoint: pgDeleteSubscriptionByEndpointQuery, - deleteSubscriptionByUserID: pgDeleteSubscriptionByUserIDQuery, - deleteSubscriptionByAge: pgDeleteSubscriptionByAgeQuery, - insertSubscriptionTopic: pgInsertSubscriptionTopicQuery, - deleteSubscriptionTopicAll: pgDeleteSubscriptionTopicAllQuery, - deleteSubscriptionTopicWithoutSubscription: pgDeleteSubscriptionTopicWithoutSubscription, + selectSubscriptionIDByEndpoint: postgresSelectSubscriptionIDByEndpointQuery, + selectSubscriptionCountBySubscriberIP: postgresSelectSubscriptionCountBySubscriberIPQuery, + selectSubscriptionsForTopic: postgresSelectSubscriptionsForTopicQuery, + selectSubscriptionsExpiringSoon: postgresSelectSubscriptionsExpiringSoonQuery, + insertSubscription: postgresInsertSubscriptionQuery, + updateSubscriptionWarningSent: postgresUpdateSubscriptionWarningSentQuery, + updateSubscriptionUpdatedAt: postgresUpdateSubscriptionUpdatedAtQuery, + deleteSubscriptionByEndpoint: postgresDeleteSubscriptionByEndpointQuery, + deleteSubscriptionByUserID: postgresDeleteSubscriptionByUserIDQuery, + deleteSubscriptionByAge: postgresDeleteSubscriptionByAgeQuery, + insertSubscriptionTopic: postgresInsertSubscriptionTopicQuery, + deleteSubscriptionTopicAll: postgresDeleteSubscriptionTopicAllQuery, + deleteSubscriptionTopicWithoutSubscription: postgresDeleteSubscriptionTopicWithoutSubscriptionQuery, }, }, nil } func setupPostgresDB(db *sql.DB) error { var schemaVersion int - err := db.QueryRow(pgSelectSchemaVersionQuery).Scan(&schemaVersion) + err := db.QueryRow(postgresSelectSchemaVersionQuery).Scan(&schemaVersion) if err != nil { return setupNewPostgresDB(db) } @@ -111,10 +111,10 @@ func setupNewPostgresDB(db *sql.DB) error { return err } defer tx.Rollback() - if _, err := tx.Exec(pgCreateTablesQuery); err != nil { + if _, err := tx.Exec(postgresCreateTablesQuery); err != nil { return err } - if _, err := tx.Exec(pgInsertSchemaVersion, pgCurrentSchemaVersion); err != nil { + if _, err := tx.Exec(postgresInsertSchemaVersionQuery, pgCurrentSchemaVersion); err != nil { return err } return tx.Commit() diff --git a/webpush/store_sqlite.go b/webpush/store_sqlite.go index 07823672..6022f45f 100644 --- a/webpush/store_sqlite.go +++ b/webpush/store_sqlite.go @@ -39,9 +39,9 @@ const ( PRAGMA foreign_keys = ON; ` - sqliteSelectWebPushSubscriptionIDByEndpoint = `SELECT id FROM subscription WHERE endpoint = ?` - sqliteSelectWebPushSubscriptionCountBySubscriberIP = `SELECT COUNT(*) FROM subscription WHERE subscriber_ip = ?` - sqliteSelectWebPushSubscriptionsForTopicQuery = ` + sqliteSelectWebPushSubscriptionIDByEndpointQuery = `SELECT id FROM subscription WHERE endpoint = ?` + sqliteSelectWebPushSubscriptionCountBySubscriberIPQuery = `SELECT COUNT(*) FROM subscription WHERE subscriber_ip = ?` + sqliteSelectWebPushSubscriptionsForTopicQuery = ` SELECT id, endpoint, key_auth, key_p256dh, user_id FROM subscription_topic st JOIN subscription s ON s.id = st.subscription_id @@ -65,15 +65,15 @@ const ( sqliteDeleteWebPushSubscriptionByUserIDQuery = `DELETE FROM subscription WHERE user_id = ?` sqliteDeleteWebPushSubscriptionByAgeQuery = `DELETE FROM subscription WHERE updated_at <= ?` // Full table scan! - sqliteInsertWebPushSubscriptionTopicQuery = `INSERT INTO subscription_topic (subscription_id, topic) VALUES (?, ?)` - sqliteDeleteWebPushSubscriptionTopicAllQuery = `DELETE FROM subscription_topic WHERE subscription_id = ?` - sqliteDeleteWebPushSubscriptionTopicWithoutSubscription = `DELETE FROM subscription_topic WHERE subscription_id NOT IN (SELECT id FROM subscription)` + sqliteInsertWebPushSubscriptionTopicQuery = `INSERT INTO subscription_topic (subscription_id, topic) VALUES (?, ?)` + sqliteDeleteWebPushSubscriptionTopicAllQuery = `DELETE FROM subscription_topic WHERE subscription_id = ?` + sqliteDeleteWebPushSubscriptionTopicWithoutSubscriptionQuery = `DELETE FROM subscription_topic WHERE subscription_id NOT IN (SELECT id FROM subscription)` ) // SQLite schema management queries const ( sqliteCurrentWebPushSchemaVersion = 1 - sqliteInsertWebPushSchemaVersion = `INSERT INTO schemaVersion VALUES (1, ?)` + sqliteInsertWebPushSchemaVersionQuery = `INSERT INTO schemaVersion VALUES (1, ?)` sqliteSelectWebPushSchemaVersionQuery = `SELECT version FROM schemaVersion WHERE id = 1` ) @@ -92,8 +92,8 @@ func NewSQLiteStore(filename, startupQueries string) (Store, error) { return &commonStore{ db: db, queries: storeQueries{ - selectSubscriptionIDByEndpoint: sqliteSelectWebPushSubscriptionIDByEndpoint, - selectSubscriptionCountBySubscriberIP: sqliteSelectWebPushSubscriptionCountBySubscriberIP, + selectSubscriptionIDByEndpoint: sqliteSelectWebPushSubscriptionIDByEndpointQuery, + selectSubscriptionCountBySubscriberIP: sqliteSelectWebPushSubscriptionCountBySubscriberIPQuery, selectSubscriptionsForTopic: sqliteSelectWebPushSubscriptionsForTopicQuery, selectSubscriptionsExpiringSoon: sqliteSelectWebPushSubscriptionsExpiringSoonQuery, insertSubscription: sqliteInsertWebPushSubscriptionQuery, @@ -104,7 +104,7 @@ func NewSQLiteStore(filename, startupQueries string) (Store, error) { deleteSubscriptionByAge: sqliteDeleteWebPushSubscriptionByAgeQuery, insertSubscriptionTopic: sqliteInsertWebPushSubscriptionTopicQuery, deleteSubscriptionTopicAll: sqliteDeleteWebPushSubscriptionTopicAllQuery, - deleteSubscriptionTopicWithoutSubscription: sqliteDeleteWebPushSubscriptionTopicWithoutSubscription, + deleteSubscriptionTopicWithoutSubscription: sqliteDeleteWebPushSubscriptionTopicWithoutSubscriptionQuery, }, }, nil } @@ -125,7 +125,7 @@ func setupNewSQLite(db *sql.DB) error { if _, err := db.Exec(sqliteCreateWebPushSubscriptionsTableQuery); err != nil { return err } - if _, err := db.Exec(sqliteInsertWebPushSchemaVersion, sqliteCurrentWebPushSchemaVersion); err != nil { + if _, err := db.Exec(sqliteInsertWebPushSchemaVersionQuery, sqliteCurrentWebPushSchemaVersion); err != nil { return err } return nil