342 lines
14 KiB
Rust
342 lines
14 KiB
Rust
/*
|
|
* Copyright (C) 2026 Mateusz Gruszczyński @linuxiarz.pl
|
|
* Source-Available Code / Dual-Licensed.
|
|
*
|
|
* Free for non-commercial and evaluation use under terms of BSL/GPLv3.
|
|
* Commercial or production use requires a valid paid license.
|
|
* See LICENSE file in repository root for details.
|
|
*/
|
|
|
|
use crate::database::DatabaseKind;
|
|
|
|
mod mysql;
|
|
mod postgres;
|
|
mod sqlite;
|
|
|
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
|
#[allow(non_camel_case_types)]
|
|
pub enum Query {
|
|
SQLITE_FOREIGN_KEYS_ON,
|
|
SQLITE_JOURNAL_WAL,
|
|
SQLITE_BUSY_TIMEOUT,
|
|
SQLITE_LAST_INSERT_ID,
|
|
MYSQL_LAST_INSERT_ID,
|
|
POSTGRES_NOTE_REVISION_LAST_INSERT_ID,
|
|
POSTGRES_PAD_REVISION_LAST_INSERT_ID,
|
|
AUTH_LATEST_CONFIRMATION_CREATED_AT,
|
|
AUTH_UPDATE_NICKNAME,
|
|
AUTH_UPDATE_EDITOR_COLOR,
|
|
AUTH_UPDATE_THEME,
|
|
AUTH_EDITOR_COLOR_BY_USER,
|
|
RESOURCE_COLOR_BY_USER,
|
|
RESOURCE_COLOR_DELETE,
|
|
RESOURCE_COLOR_INSERT,
|
|
RESOURCE_COLORS_DELETE_BY_RESOURCE,
|
|
RESOURCE_COLORS_DELETE_BY_USER,
|
|
RESOURCE_EDITOR_SETTINGS_SELECT,
|
|
RESOURCE_EDITOR_SETTINGS_UPSERT,
|
|
RESOURCE_EDITOR_SETTINGS_DELETE,
|
|
EDITOR_PREFERENCES_SELECT_PAD,
|
|
EDITOR_PREFERENCES_SELECT_NOTE,
|
|
EDITOR_PREFERENCES_UPSERT_PAD,
|
|
EDITOR_PREFERENCES_UPSERT_NOTE,
|
|
EDITOR_PREFERENCES_DELETE_BY_USER,
|
|
AUTH_ACCOUNT_ACTION_BY_TOKEN,
|
|
AUTH_CONSUME_ACCOUNT_ACTION,
|
|
AUTH_UPDATE_EMAIL,
|
|
AUTH_DELETE_ACCOUNT_ACTIONS,
|
|
AUTH_INSERT_ACCOUNT_ACTION,
|
|
AUTH_DELETE_EXPIRED_UNCONFIRMED_USERS,
|
|
AUTH_INSERT_USER,
|
|
AUTH_INSERT_DIRECTORY_USER,
|
|
AUTH_UPDATE_DIRECTORY_USER,
|
|
AUTH_DIRECTORY_PROFILE_BY_USER,
|
|
AUTH_USER_BY_EXTERNAL_ID,
|
|
AUTH_DELETE_USER,
|
|
AUTH_ANONYMIZE_USER,
|
|
AUTH_ANONYMIZE_NOTE_CREATORS,
|
|
AUTH_NICKNAME_BY_ID,
|
|
AUTH_SESSION_EXPIRES_AT,
|
|
AUTH_DELETE_SESSION_BY_TOKEN,
|
|
AUTH_REFRESH_SESSION,
|
|
AUTH_DELETE_CONFIRMATION_TOKENS_BY_USER,
|
|
AUTH_INSERT_CONFIRMATION_TOKEN,
|
|
AUTH_FIND_CONFIRMATION_TOKEN,
|
|
AUTH_CONFIRM_USER,
|
|
AUTH_CONSUME_CONFIRMATION_TOKEN,
|
|
AUTH_DELETE_RESET_TOKENS_BY_USER,
|
|
AUTH_INSERT_RESET_TOKEN,
|
|
AUTH_FIND_RESET_TOKEN,
|
|
AUTH_UPDATE_PASSWORD,
|
|
AUTH_CONSUME_RESET_TOKEN,
|
|
AUTH_DELETE_SESSIONS_BY_USER,
|
|
AUTH_USER_BY_SESSION,
|
|
AUTH_INSERT_SESSION,
|
|
AUTH_USER_BY_NICKNAME,
|
|
AUTH_USER_BY_EMAIL,
|
|
AUTH_USER_BY_SHARE_IDENTIFIER,
|
|
USER_ATTACH_WORKSPACE,
|
|
USER_ATTACH_PAD,
|
|
USER_LIST_WORKSPACES,
|
|
USER_LIST_PADS,
|
|
USER_OWNS_WORKSPACE,
|
|
USER_OWNS_PAD,
|
|
USER_DELETE_WORKSPACE,
|
|
USER_DELETE_PAD,
|
|
USER_SET_WORKSPACE_PASSWORD,
|
|
USER_SET_PAD_PASSWORD,
|
|
USER_SET_WORKSPACE_PRIVACY,
|
|
USER_SET_PAD_PRIVACY,
|
|
RESOURCE_ACCESS_TOKENS_DELETE_BY_RESOURCE,
|
|
RESOURCE_ACCESS_TOKENS_DELETE_BY_TOKEN_HASH,
|
|
RESOURCE_ACCESS_TOKENS_INSERT,
|
|
RESOURCE_ACCESS_TOKENS_VALID_COUNT,
|
|
RESOURCE_PERMISSION_DELETE_USER,
|
|
RESOURCE_PERMISSION_INSERT,
|
|
SHARE_INVITATION_DELETE_USER,
|
|
SHARE_INVITATION_INSERT,
|
|
SHARE_INVITATION_DELETE_TOKEN,
|
|
SHARE_INVITATION_FIND_TOKEN,
|
|
SHARE_INVITATION_ACCEPT,
|
|
RESOURCE_SHARING_USERS,
|
|
RESOURCE_SHARING_LINKS,
|
|
RESOURCE_SHARING_PENDING,
|
|
SHARE_LINK_INSERT,
|
|
SHARE_LINK_UPDATE,
|
|
SHARE_LINK_REVOKE,
|
|
RESOURCE_PERMISSION_BY_USER,
|
|
SHARE_LINK_PERMISSION,
|
|
SHARE_LINK_SESSION_SOURCE,
|
|
SHARE_SESSION_INSERT,
|
|
SHARE_SESSION_PERMISSION,
|
|
SHARE_SESSIONS_DELETE_BY_LINK,
|
|
SHARE_SESSIONS_DELETE_EXPIRED,
|
|
PAD_PUBLIC_PAGE_DISABLED,
|
|
NOTE_PUBLIC_PAGE_DISABLED,
|
|
Q001,
|
|
Q002,
|
|
Q003,
|
|
Q004,
|
|
Q005,
|
|
Q006,
|
|
Q007,
|
|
Q008,
|
|
Q009,
|
|
Q010,
|
|
Q011,
|
|
Q012,
|
|
Q013,
|
|
Q014,
|
|
Q015,
|
|
Q016,
|
|
Q017,
|
|
Q018,
|
|
Q019,
|
|
Q020,
|
|
Q021,
|
|
Q022,
|
|
Q023,
|
|
Q024,
|
|
Q025,
|
|
Q026,
|
|
Q027,
|
|
Q028,
|
|
Q029,
|
|
Q030,
|
|
Q031,
|
|
Q032,
|
|
Q033,
|
|
Q034,
|
|
Q035,
|
|
Q036,
|
|
Q037,
|
|
Q038,
|
|
Q039,
|
|
Q046,
|
|
Q047,
|
|
Q040,
|
|
Q041,
|
|
Q044,
|
|
Q045,
|
|
Q048,
|
|
Q049,
|
|
Q050,
|
|
Q051,
|
|
Q054,
|
|
Q055,
|
|
Q056,
|
|
Q057,
|
|
Q058,
|
|
Q059,
|
|
}
|
|
|
|
pub fn get(kind: DatabaseKind, query: Query) -> &'static str {
|
|
match kind {
|
|
DatabaseKind::Sqlite => sqlite::get(query),
|
|
DatabaseKind::Postgres => postgres::get(query),
|
|
DatabaseKind::MySql => mysql::get(query),
|
|
}
|
|
}
|
|
|
|
pub const SQLITE_FOREIGN_KEYS_ON: Query = Query::SQLITE_FOREIGN_KEYS_ON;
|
|
pub const SQLITE_JOURNAL_WAL: Query = Query::SQLITE_JOURNAL_WAL;
|
|
pub const SQLITE_BUSY_TIMEOUT: Query = Query::SQLITE_BUSY_TIMEOUT;
|
|
pub const SQLITE_LAST_INSERT_ID: Query = Query::SQLITE_LAST_INSERT_ID;
|
|
pub const MYSQL_LAST_INSERT_ID: Query = Query::MYSQL_LAST_INSERT_ID;
|
|
pub const POSTGRES_NOTE_REVISION_LAST_INSERT_ID: Query =
|
|
Query::POSTGRES_NOTE_REVISION_LAST_INSERT_ID;
|
|
pub const POSTGRES_PAD_REVISION_LAST_INSERT_ID: Query = Query::POSTGRES_PAD_REVISION_LAST_INSERT_ID;
|
|
pub const AUTH_LATEST_CONFIRMATION_CREATED_AT: Query = Query::AUTH_LATEST_CONFIRMATION_CREATED_AT;
|
|
pub const AUTH_UPDATE_NICKNAME: Query = Query::AUTH_UPDATE_NICKNAME;
|
|
pub const AUTH_UPDATE_EDITOR_COLOR: Query = Query::AUTH_UPDATE_EDITOR_COLOR;
|
|
pub const AUTH_UPDATE_THEME: Query = Query::AUTH_UPDATE_THEME;
|
|
pub const AUTH_EDITOR_COLOR_BY_USER: Query = Query::AUTH_EDITOR_COLOR_BY_USER;
|
|
pub const RESOURCE_COLOR_BY_USER: Query = Query::RESOURCE_COLOR_BY_USER;
|
|
pub const RESOURCE_COLOR_DELETE: Query = Query::RESOURCE_COLOR_DELETE;
|
|
pub const RESOURCE_COLOR_INSERT: Query = Query::RESOURCE_COLOR_INSERT;
|
|
pub const RESOURCE_COLORS_DELETE_BY_RESOURCE: Query = Query::RESOURCE_COLORS_DELETE_BY_RESOURCE;
|
|
pub const RESOURCE_COLORS_DELETE_BY_USER: Query = Query::RESOURCE_COLORS_DELETE_BY_USER;
|
|
pub const RESOURCE_EDITOR_SETTINGS_SELECT: Query = Query::RESOURCE_EDITOR_SETTINGS_SELECT;
|
|
pub const RESOURCE_EDITOR_SETTINGS_UPSERT: Query = Query::RESOURCE_EDITOR_SETTINGS_UPSERT;
|
|
pub const RESOURCE_EDITOR_SETTINGS_DELETE: Query = Query::RESOURCE_EDITOR_SETTINGS_DELETE;
|
|
pub const EDITOR_PREFERENCES_SELECT_PAD: Query = Query::EDITOR_PREFERENCES_SELECT_PAD;
|
|
pub const EDITOR_PREFERENCES_SELECT_NOTE: Query = Query::EDITOR_PREFERENCES_SELECT_NOTE;
|
|
pub const EDITOR_PREFERENCES_UPSERT_PAD: Query = Query::EDITOR_PREFERENCES_UPSERT_PAD;
|
|
pub const EDITOR_PREFERENCES_UPSERT_NOTE: Query = Query::EDITOR_PREFERENCES_UPSERT_NOTE;
|
|
pub const EDITOR_PREFERENCES_DELETE_BY_USER: Query = Query::EDITOR_PREFERENCES_DELETE_BY_USER;
|
|
pub const AUTH_ACCOUNT_ACTION_BY_TOKEN: Query = Query::AUTH_ACCOUNT_ACTION_BY_TOKEN;
|
|
pub const AUTH_CONSUME_ACCOUNT_ACTION: Query = Query::AUTH_CONSUME_ACCOUNT_ACTION;
|
|
pub const AUTH_UPDATE_EMAIL: Query = Query::AUTH_UPDATE_EMAIL;
|
|
pub const AUTH_DELETE_ACCOUNT_ACTIONS: Query = Query::AUTH_DELETE_ACCOUNT_ACTIONS;
|
|
pub const AUTH_INSERT_ACCOUNT_ACTION: Query = Query::AUTH_INSERT_ACCOUNT_ACTION;
|
|
pub const AUTH_DELETE_EXPIRED_UNCONFIRMED_USERS: Query =
|
|
Query::AUTH_DELETE_EXPIRED_UNCONFIRMED_USERS;
|
|
pub const AUTH_INSERT_USER: Query = Query::AUTH_INSERT_USER;
|
|
pub const AUTH_INSERT_DIRECTORY_USER: Query = Query::AUTH_INSERT_DIRECTORY_USER;
|
|
pub const AUTH_UPDATE_DIRECTORY_USER: Query = Query::AUTH_UPDATE_DIRECTORY_USER;
|
|
pub const AUTH_DIRECTORY_PROFILE_BY_USER: Query = Query::AUTH_DIRECTORY_PROFILE_BY_USER;
|
|
pub const AUTH_USER_BY_EXTERNAL_ID: Query = Query::AUTH_USER_BY_EXTERNAL_ID;
|
|
pub const AUTH_DELETE_USER: Query = Query::AUTH_DELETE_USER;
|
|
pub const AUTH_ANONYMIZE_USER: Query = Query::AUTH_ANONYMIZE_USER;
|
|
pub const AUTH_ANONYMIZE_NOTE_CREATORS: Query = Query::AUTH_ANONYMIZE_NOTE_CREATORS;
|
|
pub const AUTH_NICKNAME_BY_ID: Query = Query::AUTH_NICKNAME_BY_ID;
|
|
pub const AUTH_SESSION_EXPIRES_AT: Query = Query::AUTH_SESSION_EXPIRES_AT;
|
|
pub const AUTH_DELETE_SESSION_BY_TOKEN: Query = Query::AUTH_DELETE_SESSION_BY_TOKEN;
|
|
pub const AUTH_REFRESH_SESSION: Query = Query::AUTH_REFRESH_SESSION;
|
|
pub const AUTH_DELETE_CONFIRMATION_TOKENS_BY_USER: Query =
|
|
Query::AUTH_DELETE_CONFIRMATION_TOKENS_BY_USER;
|
|
pub const AUTH_INSERT_CONFIRMATION_TOKEN: Query = Query::AUTH_INSERT_CONFIRMATION_TOKEN;
|
|
pub const AUTH_FIND_CONFIRMATION_TOKEN: Query = Query::AUTH_FIND_CONFIRMATION_TOKEN;
|
|
pub const AUTH_CONFIRM_USER: Query = Query::AUTH_CONFIRM_USER;
|
|
pub const AUTH_CONSUME_CONFIRMATION_TOKEN: Query = Query::AUTH_CONSUME_CONFIRMATION_TOKEN;
|
|
pub const AUTH_DELETE_RESET_TOKENS_BY_USER: Query = Query::AUTH_DELETE_RESET_TOKENS_BY_USER;
|
|
pub const AUTH_INSERT_RESET_TOKEN: Query = Query::AUTH_INSERT_RESET_TOKEN;
|
|
pub const AUTH_FIND_RESET_TOKEN: Query = Query::AUTH_FIND_RESET_TOKEN;
|
|
pub const AUTH_UPDATE_PASSWORD: Query = Query::AUTH_UPDATE_PASSWORD;
|
|
pub const AUTH_CONSUME_RESET_TOKEN: Query = Query::AUTH_CONSUME_RESET_TOKEN;
|
|
pub const AUTH_DELETE_SESSIONS_BY_USER: Query = Query::AUTH_DELETE_SESSIONS_BY_USER;
|
|
pub const AUTH_USER_BY_SESSION: Query = Query::AUTH_USER_BY_SESSION;
|
|
pub const AUTH_INSERT_SESSION: Query = Query::AUTH_INSERT_SESSION;
|
|
pub const AUTH_USER_BY_NICKNAME: Query = Query::AUTH_USER_BY_NICKNAME;
|
|
pub const AUTH_USER_BY_EMAIL: Query = Query::AUTH_USER_BY_EMAIL;
|
|
pub const AUTH_USER_BY_SHARE_IDENTIFIER: Query = Query::AUTH_USER_BY_SHARE_IDENTIFIER;
|
|
pub const USER_ATTACH_WORKSPACE: Query = Query::USER_ATTACH_WORKSPACE;
|
|
pub const USER_ATTACH_PAD: Query = Query::USER_ATTACH_PAD;
|
|
pub const USER_LIST_WORKSPACES: Query = Query::USER_LIST_WORKSPACES;
|
|
pub const USER_LIST_PADS: Query = Query::USER_LIST_PADS;
|
|
pub const USER_OWNS_WORKSPACE: Query = Query::USER_OWNS_WORKSPACE;
|
|
pub const USER_OWNS_PAD: Query = Query::USER_OWNS_PAD;
|
|
pub const USER_DELETE_WORKSPACE: Query = Query::USER_DELETE_WORKSPACE;
|
|
pub const USER_DELETE_PAD: Query = Query::USER_DELETE_PAD;
|
|
pub const USER_SET_WORKSPACE_PASSWORD: Query = Query::USER_SET_WORKSPACE_PASSWORD;
|
|
pub const USER_SET_PAD_PASSWORD: Query = Query::USER_SET_PAD_PASSWORD;
|
|
pub const USER_SET_WORKSPACE_PRIVACY: Query = Query::USER_SET_WORKSPACE_PRIVACY;
|
|
pub const USER_SET_PAD_PRIVACY: Query = Query::USER_SET_PAD_PRIVACY;
|
|
pub const RESOURCE_ACCESS_TOKENS_DELETE_BY_RESOURCE: Query =
|
|
Query::RESOURCE_ACCESS_TOKENS_DELETE_BY_RESOURCE;
|
|
pub const RESOURCE_ACCESS_TOKENS_DELETE_BY_TOKEN_HASH: Query =
|
|
Query::RESOURCE_ACCESS_TOKENS_DELETE_BY_TOKEN_HASH;
|
|
pub const RESOURCE_ACCESS_TOKENS_INSERT: Query = Query::RESOURCE_ACCESS_TOKENS_INSERT;
|
|
pub const RESOURCE_ACCESS_TOKENS_VALID_COUNT: Query = Query::RESOURCE_ACCESS_TOKENS_VALID_COUNT;
|
|
pub const RESOURCE_PERMISSION_DELETE_USER: Query = Query::RESOURCE_PERMISSION_DELETE_USER;
|
|
pub const RESOURCE_PERMISSION_INSERT: Query = Query::RESOURCE_PERMISSION_INSERT;
|
|
pub const SHARE_INVITATION_DELETE_USER: Query = Query::SHARE_INVITATION_DELETE_USER;
|
|
pub const SHARE_INVITATION_INSERT: Query = Query::SHARE_INVITATION_INSERT;
|
|
pub const SHARE_INVITATION_DELETE_TOKEN: Query = Query::SHARE_INVITATION_DELETE_TOKEN;
|
|
pub const SHARE_INVITATION_FIND_TOKEN: Query = Query::SHARE_INVITATION_FIND_TOKEN;
|
|
pub const SHARE_INVITATION_ACCEPT: Query = Query::SHARE_INVITATION_ACCEPT;
|
|
pub const RESOURCE_SHARING_USERS: Query = Query::RESOURCE_SHARING_USERS;
|
|
pub const RESOURCE_SHARING_LINKS: Query = Query::RESOURCE_SHARING_LINKS;
|
|
pub const RESOURCE_SHARING_PENDING: Query = Query::RESOURCE_SHARING_PENDING;
|
|
pub const SHARE_LINK_INSERT: Query = Query::SHARE_LINK_INSERT;
|
|
pub const SHARE_LINK_UPDATE: Query = Query::SHARE_LINK_UPDATE;
|
|
pub const SHARE_LINK_REVOKE: Query = Query::SHARE_LINK_REVOKE;
|
|
pub const RESOURCE_PERMISSION_BY_USER: Query = Query::RESOURCE_PERMISSION_BY_USER;
|
|
pub const SHARE_LINK_PERMISSION: Query = Query::SHARE_LINK_PERMISSION;
|
|
pub const SHARE_LINK_SESSION_SOURCE: Query = Query::SHARE_LINK_SESSION_SOURCE;
|
|
pub const SHARE_SESSION_INSERT: Query = Query::SHARE_SESSION_INSERT;
|
|
pub const SHARE_SESSION_PERMISSION: Query = Query::SHARE_SESSION_PERMISSION;
|
|
pub const SHARE_SESSIONS_DELETE_BY_LINK: Query = Query::SHARE_SESSIONS_DELETE_BY_LINK;
|
|
pub const SHARE_SESSIONS_DELETE_EXPIRED: Query = Query::SHARE_SESSIONS_DELETE_EXPIRED;
|
|
pub const PAD_PUBLIC_PAGE_DISABLED: Query = Query::PAD_PUBLIC_PAGE_DISABLED;
|
|
pub const NOTE_PUBLIC_PAGE_DISABLED: Query = Query::NOTE_PUBLIC_PAGE_DISABLED;
|
|
pub const Q001: Query = Query::Q001;
|
|
pub const Q002: Query = Query::Q002;
|
|
pub const Q003: Query = Query::Q003;
|
|
pub const Q004: Query = Query::Q004;
|
|
pub const Q005: Query = Query::Q005;
|
|
pub const Q006: Query = Query::Q006;
|
|
pub const Q007: Query = Query::Q007;
|
|
pub const Q008: Query = Query::Q008;
|
|
pub const Q009: Query = Query::Q009;
|
|
pub const Q010: Query = Query::Q010;
|
|
pub const Q011: Query = Query::Q011;
|
|
pub const Q012: Query = Query::Q012;
|
|
pub const Q013: Query = Query::Q013;
|
|
pub const Q014: Query = Query::Q014;
|
|
pub const Q015: Query = Query::Q015;
|
|
pub const Q016: Query = Query::Q016;
|
|
pub const Q017: Query = Query::Q017;
|
|
pub const Q018: Query = Query::Q018;
|
|
pub const Q019: Query = Query::Q019;
|
|
pub const Q020: Query = Query::Q020;
|
|
pub const Q021: Query = Query::Q021;
|
|
pub const Q022: Query = Query::Q022;
|
|
pub const Q023: Query = Query::Q023;
|
|
pub const Q024: Query = Query::Q024;
|
|
pub const Q025: Query = Query::Q025;
|
|
pub const Q026: Query = Query::Q026;
|
|
pub const Q027: Query = Query::Q027;
|
|
pub const Q028: Query = Query::Q028;
|
|
pub const Q029: Query = Query::Q029;
|
|
pub const Q030: Query = Query::Q030;
|
|
pub const Q031: Query = Query::Q031;
|
|
pub const Q032: Query = Query::Q032;
|
|
pub const Q033: Query = Query::Q033;
|
|
pub const Q034: Query = Query::Q034;
|
|
pub const Q035: Query = Query::Q035;
|
|
pub const Q036: Query = Query::Q036;
|
|
pub const Q037: Query = Query::Q037;
|
|
pub const Q038: Query = Query::Q038;
|
|
pub const Q039: Query = Query::Q039;
|
|
pub const Q046: Query = Query::Q046;
|
|
pub const Q047: Query = Query::Q047;
|
|
pub const Q040: Query = Query::Q040;
|
|
pub const Q041: Query = Query::Q041;
|
|
pub const Q044: Query = Query::Q044;
|
|
pub const Q045: Query = Query::Q045;
|
|
pub const Q048: Query = Query::Q048;
|
|
pub const Q049: Query = Query::Q049;
|
|
pub const Q050: Query = Query::Q050;
|
|
pub const Q051: Query = Query::Q051;
|
|
pub const Q054: Query = Query::Q054;
|
|
pub const Q055: Query = Query::Q055;
|
|
pub const Q056: Query = Query::Q056;
|
|
pub const Q057: Query = Query::Q057;
|
|
pub const Q058: Query = Query::Q058;
|
|
pub const Q059: Query = Query::Q059;
|
|
|
|
#[cfg(test)]
|
|
#[path = "../tests/queries.rs"]
|
|
mod tests;
|