392 lines
26 KiB
Rust
392 lines
26 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 super::Query;
|
|
|
|
pub fn get(query: Query) -> &'static str {
|
|
match query {
|
|
Query::SQLITE_FOREIGN_KEYS_ON => r#"PRAGMA foreign_keys = ON"#,
|
|
Query::SQLITE_JOURNAL_WAL => r#"PRAGMA journal_mode = WAL"#,
|
|
Query::SQLITE_BUSY_TIMEOUT => r#"PRAGMA busy_timeout = 5000"#,
|
|
Query::SQLITE_LAST_INSERT_ID => r#"SELECT last_insert_rowid()"#,
|
|
Query::MYSQL_LAST_INSERT_ID => r#"SELECT LAST_INSERT_ID()"#,
|
|
Query::POSTGRES_NOTE_REVISION_LAST_INSERT_ID => {
|
|
r#"SELECT currval(pg_get_serial_sequence('note_revisions', 'id'))"#
|
|
}
|
|
Query::POSTGRES_PAD_REVISION_LAST_INSERT_ID => {
|
|
r#"SELECT currval(pg_get_serial_sequence('revisions', 'id'))"#
|
|
}
|
|
Query::AUTH_LATEST_CONFIRMATION_CREATED_AT => {
|
|
r#"SELECT created_at FROM account_confirmation_tokens WHERE user_id = ? ORDER BY created_at DESC LIMIT 1"#
|
|
}
|
|
Query::AUTH_UPDATE_NICKNAME => {
|
|
r#"UPDATE users SET nickname = ?, nickname_key = ?, updated_at = ? WHERE id = ?"#
|
|
}
|
|
Query::AUTH_UPDATE_EDITOR_COLOR => {
|
|
r#"UPDATE users SET editor_color = ?, updated_at = ? WHERE id = ?"#
|
|
}
|
|
Query::AUTH_UPDATE_THEME => r#"UPDATE users SET theme = ?, updated_at = ? WHERE id = ?"#,
|
|
Query::AUTH_EDITOR_COLOR_BY_USER => r#"SELECT editor_color FROM users WHERE id = ?"#,
|
|
Query::RESOURCE_COLOR_BY_USER => {
|
|
r#"SELECT color FROM user_resource_colors WHERE user_id = ? AND resource_kind = ? AND resource_slug = ?"#
|
|
}
|
|
Query::RESOURCE_COLOR_DELETE => {
|
|
r#"DELETE FROM user_resource_colors WHERE user_id = ? AND resource_kind = ? AND resource_slug = ?"#
|
|
}
|
|
|
|
Query::RESOURCE_COLOR_INSERT => {
|
|
r#"INSERT INTO user_resource_colors (user_id, resource_kind, resource_slug, color) VALUES (?, ?, ?, ?)"#
|
|
}
|
|
Query::RESOURCE_COLORS_DELETE_BY_RESOURCE => {
|
|
r#"DELETE FROM user_resource_colors WHERE resource_kind = ? AND resource_slug = ?"#
|
|
}
|
|
Query::RESOURCE_COLORS_DELETE_BY_USER => {
|
|
r#"DELETE FROM user_resource_colors WHERE user_id = ?"#
|
|
}
|
|
Query::RESOURCE_EDITOR_SETTINGS_SELECT => {
|
|
r#"SELECT authorship_mode, CASE WHEN colors_enabled THEN 1 ELSE 0 END FROM resource_editor_settings WHERE resource_kind = ? AND resource_slug = ?"#
|
|
}
|
|
Query::RESOURCE_EDITOR_SETTINGS_UPSERT => {
|
|
r#"INSERT INTO resource_editor_settings (resource_kind, resource_slug, authorship_mode, colors_enabled, updated_at) VALUES (?, ?, ?, ?, CURRENT_TIMESTAMP) ON CONFLICT (resource_kind, resource_slug) DO UPDATE SET authorship_mode = excluded.authorship_mode, colors_enabled = excluded.colors_enabled, updated_at = CURRENT_TIMESTAMP"#
|
|
}
|
|
Query::RESOURCE_EDITOR_SETTINGS_DELETE => {
|
|
r#"DELETE FROM resource_editor_settings WHERE resource_kind = ? AND resource_slug = ?"#
|
|
}
|
|
Query::EDITOR_PREFERENCES_SELECT_PAD => {
|
|
r#"SELECT CASE WHEN compact_view THEN 1 ELSE 0 END, CASE WHEN editor_line_numbers THEN 1 ELSE 0 END, CASE WHEN preview_line_numbers THEN 1 ELSE 0 END, CASE WHEN line_links THEN 1 ELSE 0 END, font_family, font_size FROM user_editor_preferences WHERE user_id = ? AND pad_id = ?"#
|
|
}
|
|
Query::EDITOR_PREFERENCES_SELECT_NOTE => {
|
|
r#"SELECT CASE WHEN compact_view THEN 1 ELSE 0 END, CASE WHEN editor_line_numbers THEN 1 ELSE 0 END, CASE WHEN preview_line_numbers THEN 1 ELSE 0 END, CASE WHEN line_links THEN 1 ELSE 0 END, font_family, font_size FROM user_editor_preferences WHERE user_id = ? AND note_id = ?"#
|
|
}
|
|
Query::EDITOR_PREFERENCES_UPSERT_PAD => {
|
|
r#"INSERT INTO user_editor_preferences (user_id, pad_id, note_id, compact_view, editor_line_numbers, preview_line_numbers, line_links, font_family, font_size, updated_at) VALUES (?, ?, NULL, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP) ON CONFLICT (user_id, pad_id) DO UPDATE SET compact_view = excluded.compact_view, editor_line_numbers = excluded.editor_line_numbers, preview_line_numbers = excluded.preview_line_numbers, line_links = excluded.line_links, font_family = excluded.font_family, font_size = excluded.font_size, updated_at = CURRENT_TIMESTAMP"#
|
|
}
|
|
Query::EDITOR_PREFERENCES_UPSERT_NOTE => {
|
|
r#"INSERT INTO user_editor_preferences (user_id, pad_id, note_id, compact_view, editor_line_numbers, preview_line_numbers, line_links, font_family, font_size, updated_at) VALUES (?, NULL, ?, ?, ?, ?, ?, ?, ?, CURRENT_TIMESTAMP) ON CONFLICT (user_id, note_id) DO UPDATE SET compact_view = excluded.compact_view, editor_line_numbers = excluded.editor_line_numbers, preview_line_numbers = excluded.preview_line_numbers, line_links = excluded.line_links, font_family = excluded.font_family, font_size = excluded.font_size, updated_at = CURRENT_TIMESTAMP"#
|
|
}
|
|
Query::EDITOR_PREFERENCES_DELETE_BY_USER => {
|
|
r#"DELETE FROM user_editor_preferences WHERE user_id = ?"#
|
|
}
|
|
Query::AUTH_ACCOUNT_ACTION_BY_TOKEN => {
|
|
r#"SELECT user_id, action, payload, expires_at, used_at FROM account_action_tokens WHERE token = ?"#
|
|
}
|
|
Query::AUTH_CONSUME_ACCOUNT_ACTION => {
|
|
r#"UPDATE account_action_tokens SET used_at = ? WHERE token = ? AND used_at IS NULL"#
|
|
}
|
|
Query::AUTH_UPDATE_EMAIL => {
|
|
r#"UPDATE users SET email = ?, email_key = ?, updated_at = ? WHERE id = ?"#
|
|
}
|
|
Query::AUTH_DELETE_ACCOUNT_ACTIONS => {
|
|
r#"DELETE FROM account_action_tokens WHERE user_id = ? AND action = ?"#
|
|
}
|
|
Query::AUTH_INSERT_ACCOUNT_ACTION => {
|
|
r#"INSERT INTO account_action_tokens (token,user_id,action,payload,expires_at,created_at) VALUES (?, ?, ?, ?, ?, ?)"#
|
|
}
|
|
Query::AUTH_DELETE_EXPIRED_UNCONFIRMED_USERS => {
|
|
r#"DELETE FROM users WHERE confirmed_at IS NULL AND created_at < ?"#
|
|
}
|
|
Query::AUTH_INSERT_USER => {
|
|
r#"INSERT INTO users (nickname, nickname_key, email, email_key, password_hash, confirmed_at) VALUES (?, ?, ?, ?, ?, ?)"#
|
|
}
|
|
Query::AUTH_INSERT_DIRECTORY_USER => {
|
|
r#"INSERT INTO users (nickname, nickname_key, email, email_key, password_hash, confirmed_at, auth_provider, external_id, external_dn, directory_display_name, directory_username) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"#
|
|
}
|
|
Query::AUTH_UPDATE_DIRECTORY_USER => {
|
|
r#"UPDATE users SET nickname = ?, nickname_key = ?, email = ?, email_key = ?, auth_provider = ?, external_id = ?, external_dn = ?, directory_display_name = ?, directory_username = ?, updated_at = ? WHERE id = ?"#
|
|
}
|
|
Query::AUTH_DIRECTORY_PROFILE_BY_USER => {
|
|
r#"SELECT auth_provider, directory_display_name FROM users WHERE id = ?"#
|
|
}
|
|
Query::AUTH_USER_BY_EXTERNAL_ID => {
|
|
r#"SELECT id, nickname, email, password_hash, confirmed_at, is_active, theme FROM users WHERE auth_provider = ? AND external_id = ?"#
|
|
}
|
|
Query::AUTH_DELETE_USER => r#"DELETE FROM users WHERE id = ?"#,
|
|
Query::AUTH_ANONYMIZE_USER => {
|
|
r#"UPDATE users SET nickname = ?, nickname_key = ?, email = ?, email_key = ?, password_hash = ?, is_active = 0, auth_provider = 'deleted', external_id = NULL, external_dn = NULL, directory_display_name = NULL, directory_username = NULL, editor_color = NULL, updated_at = ? WHERE id = ?"#
|
|
}
|
|
Query::AUTH_NICKNAME_BY_ID => r#"SELECT nickname FROM users WHERE id = ?"#,
|
|
Query::AUTH_ANONYMIZE_NOTE_CREATORS => {
|
|
r#"UPDATE notes SET created_by = ? WHERE created_by = ?"#
|
|
}
|
|
Query::AUTH_SESSION_EXPIRES_AT => r#"SELECT expires_at FROM user_sessions WHERE token = ?"#,
|
|
Query::AUTH_DELETE_SESSION_BY_TOKEN => r#"DELETE FROM user_sessions WHERE token = ?"#,
|
|
Query::AUTH_REFRESH_SESSION => {
|
|
r#"UPDATE user_sessions SET expires_at = ? WHERE token = ? AND expires_at > ?"#
|
|
}
|
|
Query::AUTH_DELETE_CONFIRMATION_TOKENS_BY_USER => {
|
|
r#"DELETE FROM account_confirmation_tokens WHERE user_id = ?"#
|
|
}
|
|
Query::AUTH_INSERT_CONFIRMATION_TOKEN => {
|
|
r#"INSERT INTO account_confirmation_tokens (token, user_id, expires_at) VALUES (?, ?, ?)"#
|
|
}
|
|
Query::AUTH_FIND_CONFIRMATION_TOKEN => {
|
|
r#"SELECT user_id, expires_at, used_at FROM account_confirmation_tokens WHERE token = ?"#
|
|
}
|
|
Query::AUTH_CONFIRM_USER => {
|
|
r#"UPDATE users SET confirmed_at = ?, updated_at = ? WHERE id = ?"#
|
|
}
|
|
Query::AUTH_CONSUME_CONFIRMATION_TOKEN => {
|
|
r#"UPDATE account_confirmation_tokens SET used_at = ? WHERE token = ? AND used_at IS NULL AND expires_at > ?"#
|
|
}
|
|
Query::AUTH_DELETE_RESET_TOKENS_BY_USER => {
|
|
r#"DELETE FROM password_reset_tokens WHERE user_id = ?"#
|
|
}
|
|
Query::AUTH_INSERT_RESET_TOKEN => {
|
|
r#"INSERT INTO password_reset_tokens (token, user_id, expires_at) VALUES (?, ?, ?)"#
|
|
}
|
|
Query::AUTH_FIND_RESET_TOKEN => {
|
|
r#"SELECT user_id, expires_at, used_at FROM password_reset_tokens WHERE token = ?"#
|
|
}
|
|
Query::AUTH_UPDATE_PASSWORD => {
|
|
r#"UPDATE users SET password_hash = ?, updated_at = ? WHERE id = ?"#
|
|
}
|
|
Query::AUTH_CONSUME_RESET_TOKEN => {
|
|
r#"UPDATE password_reset_tokens SET used_at = ? WHERE token = ? AND used_at IS NULL AND expires_at > ?"#
|
|
}
|
|
Query::AUTH_DELETE_SESSIONS_BY_USER => r#"DELETE FROM user_sessions WHERE user_id = ?"#,
|
|
Query::AUTH_USER_BY_SESSION => {
|
|
r#"SELECT u.id, u.nickname, u.email, u.password_hash, u.confirmed_at, u.is_active, u.theme FROM user_sessions s JOIN users u ON u.id = s.user_id WHERE s.token = ? AND s.expires_at > ? AND u.is_active = 1"#
|
|
}
|
|
Query::AUTH_INSERT_SESSION => {
|
|
r#"INSERT INTO user_sessions (token, user_id, expires_at) VALUES (?, ?, ?)"#
|
|
}
|
|
Query::AUTH_USER_BY_NICKNAME => {
|
|
r#"SELECT id, nickname, email, password_hash, confirmed_at, is_active, theme FROM users WHERE nickname_key = ?"#
|
|
}
|
|
Query::AUTH_USER_BY_EMAIL => {
|
|
r#"SELECT id, nickname, email, password_hash, confirmed_at, is_active, theme FROM users WHERE email_key = ?"#
|
|
}
|
|
Query::AUTH_USER_BY_SHARE_IDENTIFIER => {
|
|
r#"SELECT id, nickname, email, password_hash, confirmed_at, CASE WHEN is_active THEN 1 ELSE 0 END AS is_active, theme FROM users WHERE is_active = 1 AND (email_key = ?1 OR LOWER(directory_username) = ?1 OR LOWER(external_id) = ?1) LIMIT 1"#
|
|
}
|
|
Query::USER_ATTACH_WORKSPACE => {
|
|
r#"INSERT INTO user_workspaces (user_id, workspace_id) SELECT ?, id FROM workspaces WHERE slug = ?"#
|
|
}
|
|
Query::USER_ATTACH_PAD => {
|
|
r#"INSERT INTO user_pads (user_id, pad_id) SELECT ?, id FROM pads WHERE slug = ?"#
|
|
}
|
|
Query::USER_LIST_WORKSPACES => {
|
|
r#"SELECT w.slug, w.title, CASE WHEN w.password_hash IS NULL THEN 0 ELSE 1 END AS protected, w.updated_at, CASE WHEN w.is_private THEN 1 ELSE 0 END AS private, 1 AS owned, 'rw' AS permission, '' AS shared_by FROM user_workspaces uw JOIN workspaces w ON w.id = uw.workspace_id WHERE uw.user_id = ? UNION SELECT w.slug, w.title, CASE WHEN w.password_hash IS NULL THEN 0 ELSE 1 END, w.updated_at, CASE WHEN w.is_private THEN 1 ELSE 0 END, 0, rp.permission, COALESCE((SELECT u.nickname FROM user_workspaces owner_uw JOIN users u ON u.id = owner_uw.user_id WHERE owner_uw.workspace_id = w.id LIMIT 1), 'Unknown user') AS shared_by FROM resource_permissions rp JOIN workspaces w ON w.slug = rp.resource_slug WHERE rp.resource_kind = 'workspace' AND rp.user_id = ? ORDER BY updated_at DESC"#
|
|
}
|
|
Query::USER_LIST_PADS => {
|
|
r#"SELECT p.slug, p.title, CASE WHEN p.password_hash IS NULL THEN 0 ELSE 1 END AS protected, p.updated_at, CASE WHEN p.is_private THEN 1 ELSE 0 END AS private, 1 AS owned, 'rw' AS permission, '' AS shared_by FROM user_pads up JOIN pads p ON p.id = up.pad_id WHERE up.user_id = ? UNION SELECT p.slug, p.title, CASE WHEN p.password_hash IS NULL THEN 0 ELSE 1 END, p.updated_at, CASE WHEN p.is_private THEN 1 ELSE 0 END, 0, rp.permission, COALESCE((SELECT u.nickname FROM user_pads owner_up JOIN users u ON u.id = owner_up.user_id WHERE owner_up.pad_id = p.id LIMIT 1), 'Unknown user') AS shared_by FROM resource_permissions rp JOIN pads p ON p.slug = rp.resource_slug WHERE rp.resource_kind = 'pad' AND rp.user_id = ? ORDER BY updated_at DESC"#
|
|
}
|
|
Query::USER_OWNS_WORKSPACE => {
|
|
r#"SELECT COUNT(*) FROM user_workspaces uw JOIN workspaces w ON w.id = uw.workspace_id WHERE uw.user_id = ? AND w.slug = ?"#
|
|
}
|
|
Query::USER_OWNS_PAD => {
|
|
r#"SELECT COUNT(*) FROM user_pads up JOIN pads p ON p.id = up.pad_id WHERE up.user_id = ? AND p.slug = ?"#
|
|
}
|
|
Query::USER_DELETE_WORKSPACE => r#"DELETE FROM workspaces WHERE slug = ?"#,
|
|
Query::USER_DELETE_PAD => r#"DELETE FROM pads WHERE slug = ?"#,
|
|
Query::USER_SET_WORKSPACE_PASSWORD => {
|
|
r#"UPDATE workspaces SET password_hash = ?, updated_at = CURRENT_TIMESTAMP WHERE slug = ?"#
|
|
}
|
|
Query::USER_SET_PAD_PASSWORD => {
|
|
r#"UPDATE pads SET password_hash = ?, updated_at = CURRENT_TIMESTAMP WHERE slug = ?"#
|
|
}
|
|
Query::USER_SET_WORKSPACE_PRIVACY => {
|
|
r#"UPDATE workspaces SET is_private = ?, updated_at = CURRENT_TIMESTAMP WHERE slug = ?"#
|
|
}
|
|
Query::USER_SET_PAD_PRIVACY => {
|
|
r#"UPDATE pads SET is_private = ?, updated_at = CURRENT_TIMESTAMP WHERE slug = ?"#
|
|
}
|
|
Query::RESOURCE_ACCESS_TOKENS_DELETE_BY_RESOURCE => {
|
|
r#"DELETE FROM resource_access_tokens WHERE resource_kind = ? AND resource_slug = ?"#
|
|
}
|
|
Query::RESOURCE_ACCESS_TOKENS_INSERT => {
|
|
r#"INSERT INTO resource_access_tokens (token_hash, resource_kind, resource_slug, expires_at) VALUES (?, ?, ?, ?)"#
|
|
}
|
|
Query::RESOURCE_ACCESS_TOKENS_VALID_COUNT => {
|
|
r#"SELECT COUNT(*) FROM resource_access_tokens WHERE token_hash = ? AND resource_kind = ? AND resource_slug = ? AND expires_at > ?"#
|
|
}
|
|
Query::RESOURCE_PERMISSION_DELETE_USER => {
|
|
r#"DELETE FROM resource_permissions WHERE resource_kind = ? AND resource_slug = ? AND user_id = ?"#
|
|
}
|
|
Query::RESOURCE_PERMISSION_INSERT => {
|
|
r#"INSERT INTO resource_permissions (resource_kind, resource_slug, user_id, permission) VALUES (?, ?, ?, ?)"#
|
|
}
|
|
Query::SHARE_INVITATION_DELETE_USER => {
|
|
r#"DELETE FROM resource_share_invitations WHERE resource_kind = ? AND resource_slug = ? AND user_id = ?"#
|
|
}
|
|
Query::SHARE_INVITATION_INSERT => {
|
|
r#"INSERT INTO resource_share_invitations (token_hash, resource_kind, resource_slug, user_id, permission, created_by, expires_at) VALUES (?, ?, ?, ?, ?, ?, ?)"#
|
|
}
|
|
Query::SHARE_INVITATION_DELETE_TOKEN => {
|
|
r#"DELETE FROM resource_share_invitations WHERE token_hash = ?"#
|
|
}
|
|
Query::SHARE_INVITATION_FIND_TOKEN => {
|
|
r#"SELECT resource_kind, resource_slug, user_id, permission, expires_at, accepted_at FROM resource_share_invitations WHERE token_hash = ?"#
|
|
}
|
|
Query::SHARE_INVITATION_ACCEPT => {
|
|
r#"UPDATE resource_share_invitations SET accepted_at = ? WHERE token_hash = ?"#
|
|
}
|
|
Query::RESOURCE_SHARING_USERS => {
|
|
r#"SELECT u.email, u.nickname, rp.permission FROM resource_permissions rp JOIN users u ON u.id = rp.user_id WHERE rp.resource_kind = ? AND rp.resource_slug = ? ORDER BY u.email"#
|
|
}
|
|
Query::RESOURCE_SHARING_LINKS => {
|
|
r#"SELECT token_hash, label, permission, expires_at, created_at FROM resource_share_links WHERE resource_kind = ? AND resource_slug = ? AND revoked_at IS NULL ORDER BY created_at DESC"#
|
|
}
|
|
Query::RESOURCE_SHARING_PENDING => {
|
|
r#"SELECT u.email, u.nickname, i.permission, i.expires_at FROM resource_share_invitations i JOIN users u ON u.id = i.user_id WHERE i.resource_kind = ? AND i.resource_slug = ? AND i.accepted_at IS NULL ORDER BY u.email"#
|
|
}
|
|
Query::SHARE_LINK_INSERT => {
|
|
r#"INSERT INTO resource_share_links (token_hash, label, resource_kind, resource_slug, permission, expires_at, created_by) VALUES (?, ?, ?, ?, ?, ?, ?)"#
|
|
}
|
|
Query::SHARE_LINK_UPDATE => {
|
|
r#"UPDATE resource_share_links SET label = ?, permission = ?, expires_at = ? WHERE token_hash = ? AND resource_kind = ? AND resource_slug = ? AND revoked_at IS NULL"#
|
|
}
|
|
Query::SHARE_LINK_REVOKE => {
|
|
r#"UPDATE resource_share_links SET revoked_at = ? WHERE token_hash = ? AND resource_kind = ? AND resource_slug = ?"#
|
|
}
|
|
Query::RESOURCE_PERMISSION_BY_USER => {
|
|
r#"SELECT permission FROM resource_permissions WHERE resource_kind = ? AND resource_slug = ? AND user_id = ?"#
|
|
}
|
|
Query::SHARE_LINK_PERMISSION => {
|
|
r#"SELECT permission, expires_at FROM resource_share_links WHERE token_hash = ? AND resource_kind = ? AND resource_slug = ? AND revoked_at IS NULL"#
|
|
}
|
|
Query::SHARE_LINK_SESSION_SOURCE => {
|
|
r#"SELECT token_hash, permission, expires_at FROM resource_share_links WHERE token_hash = ? AND resource_kind = ? AND resource_slug = ? AND revoked_at IS NULL"#
|
|
}
|
|
Query::SHARE_SESSION_INSERT => {
|
|
r#"INSERT INTO resource_share_sessions (session_token_hash, share_token_hash, resource_kind, resource_slug, expires_at) VALUES (?, ?, ?, ?, ?)"#
|
|
}
|
|
Query::SHARE_SESSION_PERMISSION => {
|
|
r#"SELECT l.permission, s.expires_at, l.expires_at FROM resource_share_sessions s JOIN resource_share_links l ON l.token_hash = s.share_token_hash AND l.resource_kind = s.resource_kind AND l.resource_slug = s.resource_slug WHERE s.session_token_hash = ? AND s.resource_kind = ? AND s.resource_slug = ? AND l.revoked_at IS NULL"#
|
|
}
|
|
Query::SHARE_SESSIONS_DELETE_BY_LINK => {
|
|
r#"DELETE FROM resource_share_sessions WHERE share_token_hash = ? AND resource_kind = ? AND resource_slug = ?"#
|
|
}
|
|
Query::SHARE_SESSIONS_DELETE_EXPIRED => {
|
|
r#"DELETE FROM resource_share_sessions WHERE expires_at <= ?"#
|
|
}
|
|
|
|
Query::PAD_PUBLIC_PAGE_DISABLED => {
|
|
r#"SELECT CASE WHEN public_page_disabled THEN 1 ELSE 0 END FROM pads WHERE id = ?"#
|
|
}
|
|
Query::NOTE_PUBLIC_PAGE_DISABLED => {
|
|
r#"SELECT CASE WHEN public_page_disabled THEN 1 ELSE 0 END FROM notes WHERE id = ?"#
|
|
}
|
|
Query::Q001 => {
|
|
r#"SELECT id, slug, title, password_hash, created_at, updated_at, CAST(CASE WHEN is_private THEN 1 ELSE 0 END AS INTEGER) AS is_private, created_by_guest_id FROM workspaces WHERE slug = ?"#
|
|
}
|
|
Query::Q002 => r#"INSERT INTO workspaces (slug, title, password_hash, created_by_guest_id) VALUES (?, ?, ?, ?)"#,
|
|
Query::Q003 => {
|
|
r#"SELECT id, workspace_id, slug, title, content, created_at, updated_at, owner_map, protected, created_by, created_by_guest_id FROM notes WHERE workspace_id = ? ORDER BY updated_at DESC, id DESC"#
|
|
}
|
|
Query::Q004 => {
|
|
r#"SELECT id, workspace_id, slug, title, content, created_at, updated_at, owner_map, protected, created_by, created_by_guest_id FROM notes WHERE workspace_id = ? AND slug = ?"#
|
|
}
|
|
Query::Q005 => {
|
|
r#"INSERT INTO notes (workspace_id, slug, title, protected, created_by, created_by_guest_id) VALUES (?, ?, ?, ?, ?, ?)"#
|
|
}
|
|
Query::Q006 => {
|
|
r#"UPDATE notes SET content = ?, owner_map = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?"#
|
|
}
|
|
Query::Q007 => r#"UPDATE workspaces SET updated_at = CURRENT_TIMESTAMP WHERE id = ?"#,
|
|
Query::Q008 => {
|
|
r#"INSERT INTO note_revisions (note_id, content, author, owner_map) VALUES (?, ?, ?, ?)"#
|
|
}
|
|
Query::Q009 => r#"SELECT updated_at FROM notes WHERE id = ?"#,
|
|
Query::Q010 => {
|
|
r#"SELECT id, content, created_at, author, owner_map FROM note_revisions WHERE note_id = ? ORDER BY id DESC LIMIT 100"#
|
|
}
|
|
Query::Q011 => {
|
|
r#"SELECT id, slug, title, content, password_hash, created_at, updated_at, CAST(CASE WHEN is_private THEN 1 ELSE 0 END AS INTEGER) AS is_private, created_by_guest_id FROM pads WHERE slug = ?"#
|
|
}
|
|
Query::Q012 => {
|
|
r#"INSERT INTO pads (slug, title, password_hash, created_by_guest_id) VALUES (?, ?, ?, ?)"#
|
|
}
|
|
Query::Q013 => {
|
|
r#"UPDATE pads SET content = ?, owner_map = ?, updated_at = CURRENT_TIMESTAMP WHERE id = ?"#
|
|
}
|
|
Query::Q014 => {
|
|
r#"INSERT INTO revisions (pad_id, content, author, owner_map) VALUES (?, ?, ?, ?)"#
|
|
}
|
|
Query::Q015 => r#"SELECT updated_at FROM pads WHERE id = ?"#,
|
|
Query::Q016 => {
|
|
r#"SELECT id, content, created_at, author, owner_map FROM revisions WHERE pad_id = ? ORDER BY id DESC LIMIT 100"#
|
|
}
|
|
Query::Q017 => r#"SELECT token FROM published_pages WHERE pad_id = ?"#,
|
|
Query::Q018 => r#"INSERT INTO published_pages (token, pad_id) VALUES (?, ?)"#,
|
|
Query::Q019 => r#"SELECT token FROM published_pages WHERE note_id = ?"#,
|
|
Query::Q020 => r#"INSERT INTO published_pages (token, note_id) VALUES (?, ?)"#,
|
|
Query::Q021 => {
|
|
r#"SELECT pp.token, pp.pad_id, pp.note_id, CASE WHEN pp.allow_task_updates THEN 1 ELSE 0 END AS allow_task_updates, COALESCE(p.slug, n.slug) AS resource_slug, n.workspace_id AS workspace_id, w.slug AS workspace_slug, COALESCE(p.owner_map, n.owner_map, '[]') AS owner_map, COALESCE(p.title, n.title) AS title, COALESCE(p.content, n.content) AS content, COALESCE(p.updated_at, n.updated_at) AS updated_at FROM published_pages pp LEFT JOIN pads p ON p.id = pp.pad_id LEFT JOIN notes n ON n.id = pp.note_id LEFT JOIN workspaces w ON w.id = n.workspace_id WHERE pp.token = ?"#
|
|
}
|
|
Query::Q022 => r#"SELECT file_token FROM pads WHERE id = ?"#,
|
|
Query::Q023 => r#"UPDATE pads SET file_token = ? WHERE id = ? AND file_token IS NULL"#,
|
|
Query::Q024 => r#"SELECT file_token FROM notes WHERE id = ?"#,
|
|
Query::Q025 => r#"UPDATE notes SET file_token = ? WHERE id = ? AND file_token IS NULL"#,
|
|
Query::Q026 => r#"SELECT id FROM pads WHERE file_token = ?"#,
|
|
Query::Q027 => r#"SELECT id FROM notes WHERE file_token = ?"#,
|
|
Query::Q028 => r#"SELECT content FROM note_revisions WHERE id = ? AND note_id = ?"#,
|
|
Query::Q029 => r#"SELECT content FROM revisions WHERE id = ? AND pad_id = ?"#,
|
|
Query::Q030 => r#"SELECT owner_map FROM revisions WHERE id = ? AND pad_id = ?"#,
|
|
Query::Q031 => r#"DELETE FROM notes WHERE id = ?"#,
|
|
Query::Q032 => {
|
|
r#"INSERT INTO note_files (note_id, filename, url, mime_type, size_bytes) VALUES (?, ?, ?, ?, ?)"#
|
|
}
|
|
Query::Q033 => {
|
|
r#"SELECT id, filename, url, mime_type, size_bytes, created_at, is_attached, detached_at FROM note_files WHERE note_id = ? ORDER BY id DESC"#
|
|
}
|
|
Query::Q034 => r#"UPDATE note_files SET is_attached = ?, detached_at = ? WHERE id = ?"#,
|
|
Query::Q035 => {
|
|
r#"INSERT INTO pad_files (pad_id, filename, url, mime_type, size_bytes) VALUES (?, ?, ?, ?, ?)"#
|
|
}
|
|
Query::Q036 => {
|
|
r#"SELECT id, filename, url, mime_type, size_bytes, created_at, is_attached, detached_at FROM pad_files WHERE pad_id = ? ORDER BY id DESC"#
|
|
}
|
|
Query::Q037 => r#"UPDATE pad_files SET is_attached = ?, detached_at = ? WHERE id = ?"#,
|
|
Query::Q038 => {
|
|
r#"SELECT id, filename, url, mime_type, size_bytes, created_at, is_attached, detached_at FROM note_files WHERE id = ? AND note_id = ?"#
|
|
}
|
|
Query::Q039 => r#"DELETE FROM note_files WHERE id = ? AND note_id = ?"#,
|
|
Query::Q046 => {
|
|
r#"SELECT id, filename, url, mime_type, size_bytes, created_at, is_attached, detached_at FROM pad_files WHERE id = ? AND pad_id = ?"#
|
|
}
|
|
Query::Q047 => r#"DELETE FROM pad_files WHERE id = ? AND pad_id = ?"#,
|
|
Query::Q040 => r#"UPDATE published_pages SET allow_task_updates = ? WHERE pad_id = ?"#,
|
|
Query::Q041 => r#"UPDATE published_pages SET allow_task_updates = ? WHERE note_id = ?"#,
|
|
Query::Q044 => {
|
|
r#"SELECT CASE WHEN allow_task_updates THEN 1 ELSE 0 END FROM published_pages WHERE pad_id = ?"#
|
|
}
|
|
Query::Q045 => {
|
|
r#"SELECT CASE WHEN allow_task_updates THEN 1 ELSE 0 END FROM published_pages WHERE note_id = ?"#
|
|
}
|
|
|
|
Query::Q048 => {
|
|
r#"SELECT CASE WHEN unprotected THEN 1 ELSE 0 END FROM published_pages WHERE pad_id = ?"#
|
|
}
|
|
Query::Q049 => {
|
|
r#"SELECT CASE WHEN unprotected THEN 1 ELSE 0 END FROM published_pages WHERE note_id = ?"#
|
|
}
|
|
Query::Q050 => r#"UPDATE published_pages SET unprotected = ? WHERE pad_id = ?"#,
|
|
Query::Q054 => {
|
|
r#"INSERT INTO note_revisions (note_id, content, author, owner_map, collaboration_client_id, collaboration_update_id) VALUES (?, ?, ?, ?, ?, ?)"#
|
|
}
|
|
Query::Q055 => {
|
|
r#"INSERT INTO revisions (pad_id, content, author, owner_map, collaboration_client_id, collaboration_update_id) VALUES (?, ?, ?, ?, ?, ?)"#
|
|
}
|
|
Query::Q056 => {
|
|
r#"SELECT MAX(collaboration_update_id) FROM note_revisions WHERE note_id = ? AND collaboration_client_id = ?"#
|
|
}
|
|
Query::Q057 => {
|
|
r#"SELECT MAX(collaboration_update_id) FROM revisions WHERE pad_id = ? AND collaboration_client_id = ?"#
|
|
}
|
|
Query::Q058 => {
|
|
r#"SELECT n.content, n.owner_map, COALESCE((SELECT MAX(r.id) FROM note_revisions r WHERE r.note_id = n.id), 0) AS revision_id FROM notes n WHERE n.id = ?"#
|
|
}
|
|
Query::Q059 => {
|
|
r#"SELECT p.content, p.owner_map, COALESCE((SELECT MAX(r.id) FROM revisions r WHERE r.pad_id = p.id), 0) AS revision_id FROM pads p WHERE p.id = ?"#
|
|
}
|
|
Query::Q051 => r#"UPDATE published_pages SET unprotected = ? WHERE note_id = ?"#,
|
|
}
|
|
}
|