pub(crate) mod sql {
pub(crate) const INSERT_NEW: &str = r#"INSERT INTO arcature_remember_tokens
(series, secret_digest, subject, expires_at, created_at)
VALUES ($1, $2, $3, $4, $5)
ON CONFLICT (series) DO NOTHING"#;
pub(crate) const FIND_LIVE: &str = r#"SELECT secret_digest,
previous_digest,
CASE WHEN rotated_at IS NOT NULL AND rotated_at > $1
THEN CAST(1 AS BIGINT) ELSE CAST(0 AS BIGINT) END,
subject
FROM arcature_remember_tokens
WHERE series = $2
AND expires_at > now()"#;
pub(crate) const ROTATE: &str = r#"UPDATE arcature_remember_tokens
SET previous_digest = secret_digest,
secret_digest = $1,
rotated_at = $2
WHERE series = $3
AND secret_digest = $4"#;
pub(crate) const DELETE_SERIES: &str = "DELETE FROM arcature_remember_tokens WHERE series = $1";
pub(crate) const DELETE_FOR: &str = "DELETE FROM arcature_remember_tokens WHERE subject = $1";
pub(crate) const DELETE_EXPIRED: &str =
"DELETE FROM arcature_remember_tokens WHERE expires_at <= now()";
pub(crate) const CREATE_HISTORY: &str = r#"CREATE TABLE IF NOT EXISTS arcature_remember_tokens_schema_migrations (
version TEXT PRIMARY KEY,
applied_at TIMESTAMPTZ NOT NULL DEFAULT now()
)"#;
pub(crate) const COUNT_APPLIED: &str =
"SELECT COUNT(*) FROM arcature_remember_tokens_schema_migrations WHERE version = $1";
pub(crate) const RECORD_APPLIED: &str = r#"INSERT INTO arcature_remember_tokens_schema_migrations (version)
VALUES ($1)
ON CONFLICT (version) DO NOTHING"#;
pub(crate) const LOCK: Option<&str> = Some("SELECT pg_advisory_lock(71420005)");
pub(crate) const UNLOCK: Option<&str> = Some("SELECT pg_advisory_unlock(71420005)");
pub(crate) const SCHEMA: &str = include_str!("../migrations/postgres/0001_remember_tokens.sql");
}