pub(crate) mod sql {
pub(crate) const INSERT_NEW: &str = r#"INSERT INTO arcature_api_tokens
(id, secret_digest, tokenable_id, name, abilities, expires_at, created_at)
VALUES ($1, $2, $3, $4, $5, $6, $7)
ON CONFLICT (id) DO NOTHING"#;
pub(crate) const FIND: &str = r#"SELECT tokenable_id, name, abilities, expires_at, created_at
FROM arcature_api_tokens
WHERE id = $1 AND expires_at > now()"#;
pub(crate) const AUTHENTICATE: &str = r#"SELECT secret_digest, tokenable_id, name, abilities, expires_at, created_at
FROM arcature_api_tokens
WHERE id = $1 AND expires_at > now()"#;
pub(crate) const LIST_FOR: &str = r#"SELECT id, tokenable_id, name, abilities, expires_at, created_at
FROM arcature_api_tokens
WHERE tokenable_id = $1 AND expires_at > now()
ORDER BY created_at DESC, id"#;
pub(crate) const DELETE: &str = "DELETE FROM arcature_api_tokens WHERE id = $1";
pub(crate) const DELETE_FOR: &str = "DELETE FROM arcature_api_tokens WHERE tokenable_id = $1";
pub(crate) const DELETE_EXPIRED: &str =
"DELETE FROM arcature_api_tokens WHERE expires_at <= now()";
pub(crate) const CREATE_HISTORY: &str = r#"CREATE TABLE IF NOT EXISTS arcature_api_tokens_schema_migrations (
version TEXT PRIMARY KEY,
applied_at TIMESTAMPTZ NOT NULL DEFAULT now()
)"#;
pub(crate) const COUNT_APPLIED: &str =
"SELECT COUNT(*) FROM arcature_api_tokens_schema_migrations WHERE version = $1";
pub(crate) const RECORD_APPLIED: &str = "INSERT INTO arcature_api_tokens_schema_migrations (version) VALUES ($1) ON CONFLICT DO NOTHING";
pub(crate) const LOCK: Option<&str> = Some("SELECT pg_advisory_lock(71420003)");
pub(crate) const UNLOCK: Option<&str> = Some("SELECT pg_advisory_unlock(71420003)");
pub(crate) const SCHEMA: &str = include_str!("../migrations/postgres/0001_api_tokens.sql");
}