152 lines
4.1 KiB
SQL
152 lines
4.1 KiB
SQL
-- name: ListAccounts :many
|
|
SELECT * FROM accounts ORDER BY id;
|
|
|
|
-- name: ListRunnableAccounts :many
|
|
SELECT * FROM accounts
|
|
WHERE enabled = 1
|
|
AND desired_presence <> 'offline'
|
|
AND deleted_at IS NULL
|
|
ORDER BY id;
|
|
|
|
-- name: GetAccountByID :one
|
|
SELECT * FROM accounts WHERE id = ? LIMIT 1;
|
|
|
|
-- name: GetAccountByInboxID :one
|
|
SELECT * FROM accounts WHERE gochat_inbox_id = ? LIMIT 1;
|
|
|
|
-- name: CreateAccount :one
|
|
INSERT INTO accounts (
|
|
gochat_account_id, gochat_inbox_id, gochat_inbox_identifier,
|
|
config_version, session_id, username, password, enabled,
|
|
desired_presence, gochat_hmac_token, gochat_webhook_secret,
|
|
last_config_sync_at
|
|
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP)
|
|
RETURNING *;
|
|
|
|
-- name: UpdateAccountConfig :one
|
|
UPDATE accounts SET
|
|
gochat_account_id = sqlc.arg(gochat_account_id),
|
|
gochat_inbox_identifier = sqlc.arg(gochat_inbox_identifier),
|
|
config_version = sqlc.arg(config_version),
|
|
pending_password = sqlc.narg(pending_password),
|
|
credential_state = sqlc.arg(credential_state),
|
|
enabled = sqlc.arg(enabled),
|
|
desired_presence = sqlc.arg(desired_presence),
|
|
gochat_hmac_token = sqlc.arg(gochat_hmac_token),
|
|
gochat_webhook_secret = sqlc.arg(gochat_webhook_secret),
|
|
config_sync_status = 'pending',
|
|
last_config_sync_at = CURRENT_TIMESTAMP,
|
|
deleted_at = NULL,
|
|
updated_at = CURRENT_TIMESTAMP
|
|
WHERE gochat_inbox_id = sqlc.arg(gochat_inbox_id)
|
|
AND config_version < sqlc.arg(config_version)
|
|
RETURNING *;
|
|
|
|
-- name: ApplyAccountSession :one
|
|
UPDATE accounts SET
|
|
password = COALESCE(pending_password, password),
|
|
pending_password = NULL,
|
|
credential_state = 'applied',
|
|
applied_config_version = config_version,
|
|
config_sync_status = 'applied',
|
|
base_url = ?,
|
|
site_id = ?,
|
|
login_name = ?,
|
|
ma_token = ?,
|
|
actual_presence = ?,
|
|
connection_status = 'connected',
|
|
failure_count = 0,
|
|
last_error_code = NULL,
|
|
last_error_message = NULL,
|
|
last_login_at = CURRENT_TIMESTAMP,
|
|
updated_at = CURRENT_TIMESTAMP
|
|
WHERE id = ?
|
|
RETURNING *;
|
|
|
|
-- name: UpdateAccountRuntimeError :exec
|
|
UPDATE accounts SET
|
|
connection_status = ?,
|
|
credential_state = ?,
|
|
failure_count = failure_count + 1,
|
|
last_error_code = ?,
|
|
last_error_message = ?,
|
|
updated_at = CURRENT_TIMESTAMP
|
|
WHERE id = ?;
|
|
|
|
-- name: RejectPendingCredential :exec
|
|
UPDATE accounts SET
|
|
credential_state = ?,
|
|
config_sync_status = 'rejected',
|
|
connection_status = ?,
|
|
failure_count = failure_count + 1,
|
|
last_error_code = ?,
|
|
last_error_message = ?,
|
|
updated_at = CURRENT_TIMESTAMP
|
|
WHERE id = ? AND pending_password IS NOT NULL;
|
|
|
|
-- name: MarkAccountConfigApplied :exec
|
|
UPDATE accounts SET
|
|
applied_config_version = config_version,
|
|
config_sync_status = 'applied',
|
|
credential_state = CASE
|
|
WHEN pending_password IS NULL THEN 'applied'
|
|
ELSE credential_state
|
|
END,
|
|
updated_at = CURRENT_TIMESTAMP
|
|
WHERE id = ?;
|
|
|
|
-- name: UpdateAccountPresence :exec
|
|
UPDATE accounts SET
|
|
actual_presence = ?,
|
|
connection_status = ?,
|
|
failure_count = 0,
|
|
last_error_code = NULL,
|
|
last_error_message = NULL,
|
|
updated_at = CURRENT_TIMESTAMP
|
|
WHERE id = ?;
|
|
|
|
-- name: ClearAccountSession :exec
|
|
UPDATE accounts SET
|
|
ma_token = NULL,
|
|
actual_presence = 'offline',
|
|
connection_status = 'relogin_required',
|
|
updated_at = CURRENT_TIMESTAMP
|
|
WHERE id = ?;
|
|
|
|
-- name: StopAccountRuntime :exec
|
|
UPDATE accounts SET
|
|
actual_presence = 'offline',
|
|
connection_status = ?,
|
|
updated_at = CURRENT_TIMESTAMP
|
|
WHERE id = ?;
|
|
|
|
-- name: UpdateAccountCursor :exec
|
|
UPDATE accounts SET
|
|
maxwordid = ?,
|
|
maxotick = ?,
|
|
maxtmpid = ?,
|
|
last_heartbeat_at = CURRENT_TIMESTAMP,
|
|
connection_status = 'connected',
|
|
failure_count = 0,
|
|
updated_at = CURRENT_TIMESTAMP
|
|
WHERE id = ?;
|
|
|
|
-- name: TouchAccountHeartbeat :exec
|
|
UPDATE accounts SET
|
|
last_heartbeat_at = CURRENT_TIMESTAMP,
|
|
connection_status = 'connected',
|
|
failure_count = 0,
|
|
updated_at = CURRENT_TIMESTAMP
|
|
WHERE id = ?;
|
|
|
|
-- name: MarkAccountDeleted :exec
|
|
UPDATE accounts SET
|
|
enabled = 0,
|
|
desired_presence = 'offline',
|
|
actual_presence = 'offline',
|
|
connection_status = 'disabled',
|
|
config_sync_status = 'deleted',
|
|
deleted_at = CURRENT_TIMESTAMP,
|
|
updated_at = CURRENT_TIMESTAMP
|
|
WHERE gochat_inbox_id = ? AND deleted_at IS NULL;
|