chore: remove features that don't compile
add: posts "circle" column
This commit is contained in:
parent
0310418837
commit
50704d27a9
42 changed files with 71 additions and 365 deletions
|
@ -3,12 +3,6 @@ name = "tetratto"
|
|||
version = "7.0.0"
|
||||
edition = "2024"
|
||||
|
||||
[features]
|
||||
postgres = ["tetratto-core/postgres"]
|
||||
sqlite = ["tetratto-core/sqlite"]
|
||||
redis = ["tetratto-core/redis"]
|
||||
default = ["sqlite", "redis"]
|
||||
|
||||
[dependencies]
|
||||
pathbufd = "0.1.4"
|
||||
serde = { version = "1.0.219", features = ["derive"] }
|
||||
|
@ -21,9 +15,7 @@ tokio = { version = "1.45.1", features = ["macros", "rt-multi-thread"] }
|
|||
axum-extra = { version = "0.10.1", features = ["cookie", "multipart"] }
|
||||
ammonia = "4.1.0"
|
||||
tetratto-shared = { path = "../shared" }
|
||||
tetratto-core = { path = "../core", features = [
|
||||
"redis",
|
||||
], default-features = false }
|
||||
tetratto-core = { path = "../core" }
|
||||
tetratto-l10n = { path = "../l10n" }
|
||||
|
||||
image = "0.25.6"
|
||||
|
|
|
@ -17,7 +17,6 @@ use tetratto_core::{
|
|||
auth::{DefaultTimelineChoice, User},
|
||||
permissions::FinePermission,
|
||||
},
|
||||
PUBSUB_ENABLED,
|
||||
};
|
||||
use tetratto_l10n::LangFile;
|
||||
use tetratto_shared::hash::salt;
|
||||
|
@ -468,7 +467,7 @@ pub(crate) async fn initial_context(
|
|||
) -> Context {
|
||||
let mut ctx = Context::new();
|
||||
ctx.insert("config", &config);
|
||||
ctx.insert("pubsub", &PUBSUB_ENABLED);
|
||||
ctx.insert("pubsub", &true);
|
||||
|
||||
ctx.insert("user", &user);
|
||||
ctx.insert("use_user_theme", &true);
|
||||
|
|
|
@ -144,7 +144,9 @@
|
|||
(text "{{ macros::timelines_nav_options(selected=selected) }}")
|
||||
|
||||
; secondary nav desktop only
|
||||
(text "{{ macros::timelines_secondary_nav(posts=posts, questions=questions, selected=secondary_selected) }}"))
|
||||
(text "{% if posts and questions -%}")
|
||||
(text "{{ macros::timelines_secondary_nav(posts=posts, questions=questions, selected=secondary_selected) }}")
|
||||
(text "{%- endif %}"))
|
||||
(text "{%- endmacro %}")
|
||||
|
||||
(text "{% macro timelines_nav_options(selected=\"\") -%}")
|
||||
|
|
|
@ -12,7 +12,9 @@
|
|||
("class" "card small flex items-center justify-between gap-2")
|
||||
(div
|
||||
("class" "flex items-center gap-2")
|
||||
(text "{{ icon \"list\" }}")
|
||||
(a
|
||||
("href" "/api/v1/auth/user/find/{{ stack.owner }}")
|
||||
(text "{{ components::avatar(username=stack.owner, selector_type=\"id\") }}"))
|
||||
(span
|
||||
(text "{{ stack.name }}")))
|
||||
(text "{% if user and user.id == stack.owner -%}")
|
||||
|
|
|
@ -28,8 +28,6 @@ use tetratto_core::{
|
|||
},
|
||||
DataManager,
|
||||
};
|
||||
|
||||
#[cfg(feature = "redis")]
|
||||
use tetratto_core::cache::redis::Commands;
|
||||
use tetratto_shared::{
|
||||
hash::{self, random_id},
|
||||
|
@ -534,7 +532,6 @@ pub async fn has_totp_enabled_request(
|
|||
}
|
||||
|
||||
/// Handle a subscription to the websocket.
|
||||
#[cfg(feature = "redis")]
|
||||
pub async fn subscription_handler(
|
||||
jar: CookieJar,
|
||||
ws: WebSocketUpgrade,
|
||||
|
@ -557,7 +554,6 @@ pub async fn subscription_handler(
|
|||
}))
|
||||
}
|
||||
|
||||
#[cfg(feature = "redis")]
|
||||
pub async fn handle_socket(socket: WebSocket, db: DataManager, user_id: String, stream_id: String) {
|
||||
let (mut sink, mut stream) = socket.split();
|
||||
let socket_id = tetratto_shared::hash::salt();
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
pub mod apps;
|
||||
pub mod auth;
|
||||
pub mod channels;
|
||||
pub mod communities;
|
||||
pub mod notifications;
|
||||
pub mod reactions;
|
||||
|
@ -9,9 +10,6 @@ pub mod stacks;
|
|||
pub mod uploads;
|
||||
pub mod util;
|
||||
|
||||
#[cfg(feature = "redis")]
|
||||
pub mod channels;
|
||||
|
||||
use axum::{
|
||||
routing::{any, delete, get, post, put},
|
||||
Router,
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
pub mod auth;
|
||||
pub mod chats;
|
||||
pub mod communities;
|
||||
pub mod developer;
|
||||
pub mod forge;
|
||||
|
@ -7,9 +8,6 @@ pub mod mod_panel;
|
|||
pub mod profile;
|
||||
pub mod stacks;
|
||||
|
||||
#[cfg(feature = "redis")]
|
||||
pub mod chats;
|
||||
|
||||
use axum::{
|
||||
routing::{get, post},
|
||||
Router,
|
||||
|
|
|
@ -3,12 +3,6 @@ name = "tetratto-core"
|
|||
version = "7.0.0"
|
||||
edition = "2024"
|
||||
|
||||
[features]
|
||||
postgres = ["oiseau/postgres"]
|
||||
sqlite = ["oiseau/sqlite"]
|
||||
redis = ["oiseau/redis"]
|
||||
default = ["sqlite", "redis"]
|
||||
|
||||
[dependencies]
|
||||
pathbufd = "0.1.4"
|
||||
serde = { version = "1.0.219", features = ["derive"] }
|
||||
|
@ -25,4 +19,4 @@ base16ct = { version = "0.2.0", features = ["alloc"] }
|
|||
base64 = "0.22.1"
|
||||
emojis = "0.6.4"
|
||||
regex = "1.11.1"
|
||||
oiseau = { version = "0.1.2", default-features = false }
|
||||
oiseau = { version = "0.1.2", default-features = false, features = ["postgres", "redis"] }
|
||||
|
|
|
@ -8,20 +8,13 @@ use crate::model::{
|
|||
};
|
||||
use crate::{auto_method, DataManager};
|
||||
|
||||
#[cfg(feature = "sqlite")]
|
||||
use oiseau::SqliteRow;
|
||||
|
||||
#[cfg(feature = "postgres")]
|
||||
use oiseau::PostgresRow;
|
||||
|
||||
use oiseau::{execute, get, query_rows, params};
|
||||
|
||||
impl DataManager {
|
||||
/// Get a [`ThirdPartyApp`] from an SQL row.
|
||||
pub(crate) fn get_app_from_row(
|
||||
#[cfg(feature = "sqlite")] x: &SqliteRow<'_>,
|
||||
#[cfg(feature = "postgres")] x: &PostgresRow,
|
||||
) -> ThirdPartyApp {
|
||||
pub(crate) fn get_app_from_row(x: &PostgresRow) -> ThirdPartyApp {
|
||||
ThirdPartyApp {
|
||||
id: get!(x->0(i64)) as usize,
|
||||
created: get!(x->1(i64)) as usize,
|
||||
|
|
|
@ -2,20 +2,13 @@ use oiseau::cache::Cache;
|
|||
use crate::model::{Error, Result, auth::User, moderation::AuditLogEntry, permissions::FinePermission};
|
||||
use crate::{auto_method, DataManager};
|
||||
|
||||
#[cfg(feature = "sqlite")]
|
||||
use oiseau::SqliteRow;
|
||||
|
||||
#[cfg(feature = "postgres")]
|
||||
use oiseau::PostgresRow;
|
||||
|
||||
use oiseau::{execute, get, query_rows, params};
|
||||
|
||||
impl DataManager {
|
||||
/// Get an [`AuditLogEntry`] from an SQL row.
|
||||
pub(crate) fn get_audit_log_entry_from_row(
|
||||
#[cfg(feature = "sqlite")] x: &SqliteRow<'_>,
|
||||
#[cfg(feature = "postgres")] x: &PostgresRow,
|
||||
) -> AuditLogEntry {
|
||||
pub(crate) fn get_audit_log_entry_from_row(x: &PostgresRow) -> AuditLogEntry {
|
||||
AuditLogEntry {
|
||||
id: get!(x->0(i64)) as usize,
|
||||
created: get!(x->1(i64)) as usize,
|
||||
|
|
|
@ -16,20 +16,13 @@ use tetratto_shared::{
|
|||
};
|
||||
use crate::{auto_method, DataManager};
|
||||
|
||||
#[cfg(feature = "sqlite")]
|
||||
use oiseau::SqliteRow;
|
||||
|
||||
#[cfg(feature = "postgres")]
|
||||
use oiseau::PostgresRow;
|
||||
|
||||
use oiseau::{execute, get, query_row, params};
|
||||
|
||||
impl DataManager {
|
||||
/// Get a [`User`] from an SQL row.
|
||||
pub(crate) fn get_user_from_row(
|
||||
#[cfg(feature = "sqlite")] x: &SqliteRow<'_>,
|
||||
#[cfg(feature = "postgres")] x: &PostgresRow,
|
||||
) -> User {
|
||||
pub(crate) fn get_user_from_row(x: &PostgresRow) -> User {
|
||||
User {
|
||||
id: get!(x->0(i64)) as usize,
|
||||
created: get!(x->1(i64)) as usize,
|
||||
|
|
|
@ -6,20 +6,11 @@ use crate::model::{
|
|||
};
|
||||
use crate::{auto_method, DataManager};
|
||||
|
||||
#[cfg(feature = "sqlite")]
|
||||
use oiseau::SqliteRow;
|
||||
|
||||
#[cfg(feature = "postgres")]
|
||||
use oiseau::PostgresRow;
|
||||
|
||||
use oiseau::{execute, get, query_row, query_rows, params};
|
||||
use oiseau::{PostgresRow, execute, get, query_row, query_rows, params};
|
||||
|
||||
impl DataManager {
|
||||
/// Get a [`Channel`] from an SQL row.
|
||||
pub(crate) fn get_channel_from_row(
|
||||
#[cfg(feature = "sqlite")] x: &SqliteRow<'_>,
|
||||
#[cfg(feature = "postgres")] x: &PostgresRow,
|
||||
) -> Channel {
|
||||
pub(crate) fn get_channel_from_row(x: &PostgresRow) -> Channel {
|
||||
Channel {
|
||||
id: get!(x->0(i64)) as usize,
|
||||
community: get!(x->1(i64)) as usize,
|
||||
|
|
|
@ -14,20 +14,11 @@ use pathbufd::PathBufD;
|
|||
use std::fs::{exists, remove_file};
|
||||
use crate::{auto_method, DataManager};
|
||||
|
||||
#[cfg(feature = "sqlite")]
|
||||
use oiseau::SqliteRow;
|
||||
|
||||
#[cfg(feature = "postgres")]
|
||||
use oiseau::PostgresRow;
|
||||
|
||||
use oiseau::{execute, get, query_row, query_rows, params};
|
||||
use oiseau::{PostgresRow, execute, get, query_row, query_rows, params};
|
||||
|
||||
impl DataManager {
|
||||
/// Get a [`Community`] from an SQL row.
|
||||
pub(crate) fn get_community_from_row(
|
||||
#[cfg(feature = "sqlite")] x: &SqliteRow<'_>,
|
||||
#[cfg(feature = "postgres")] x: &PostgresRow,
|
||||
) -> Community {
|
||||
pub(crate) fn get_community_from_row(x: &PostgresRow) -> Community {
|
||||
Community {
|
||||
id: get!(x->0(i64)) as usize,
|
||||
created: get!(x->1(i64)) as usize,
|
||||
|
@ -139,15 +130,10 @@ impl DataManager {
|
|||
Err(e) => return Err(Error::DatabaseConnection(e.to_string())),
|
||||
};
|
||||
|
||||
#[cfg(feature = "sqlite")]
|
||||
let empty = [];
|
||||
#[cfg(feature = "postgres")]
|
||||
let empty = &[];
|
||||
|
||||
let res = query_rows!(
|
||||
&conn,
|
||||
"SELECT * FROM communities WHERE NOT context LIKE '%\"is_nsfw\":true%' ORDER BY member_count DESC LIMIT 12",
|
||||
empty,
|
||||
params![],
|
||||
|x| { Self::get_community_from_row(x) }
|
||||
);
|
||||
|
||||
|
|
|
@ -3,20 +3,13 @@ use crate::model::moderation::AuditLogEntry;
|
|||
use crate::model::{Error, Result, auth::User, communities::PostDraft, permissions::FinePermission};
|
||||
use crate::{auto_method, DataManager};
|
||||
|
||||
#[cfg(feature = "sqlite")]
|
||||
use oiseau::SqliteRow;
|
||||
|
||||
#[cfg(feature = "postgres")]
|
||||
use oiseau::PostgresRow;
|
||||
|
||||
use oiseau::{execute, get, query_rows, params};
|
||||
|
||||
impl DataManager {
|
||||
/// Get a [`PostDraft`] from an SQL row.
|
||||
pub(crate) fn get_draft_from_row(
|
||||
#[cfg(feature = "sqlite")] x: &SqliteRow<'_>,
|
||||
#[cfg(feature = "postgres")] x: &PostgresRow,
|
||||
) -> PostDraft {
|
||||
pub(crate) fn get_draft_from_row(x: &PostgresRow) -> PostDraft {
|
||||
PostDraft {
|
||||
id: get!(x->0(i64)) as usize,
|
||||
created: get!(x->1(i64)) as usize,
|
||||
|
|
|
@ -2,13 +2,7 @@ pub mod common;
|
|||
|
||||
use std::collections::HashMap;
|
||||
use tetratto_l10n::{read_langs, LangFile};
|
||||
|
||||
#[cfg(feature = "sqlite")]
|
||||
use oiseau::sqlite::{DataManager as OiseauManager, Result};
|
||||
|
||||
#[cfg(feature = "postgres")]
|
||||
use oiseau::postgres::{DataManager as OiseauManager, Result};
|
||||
|
||||
use crate::config::Config;
|
||||
|
||||
#[derive(Clone)]
|
||||
|
|
|
@ -17,5 +17,6 @@ CREATE TABLE IF NOT EXISTS posts (
|
|||
tsvector_content tsvector GENERATED ALWAYS AS (to_tsvector ('english', coalesce(content, ''))) STORED,
|
||||
poll_id BIGINT NOT NULL,
|
||||
title TEXT NOT NULL,
|
||||
is_open INT NOT NULL DEFAULT 1
|
||||
is_open INT NOT NULL DEFAULT 1,
|
||||
circle BIGINT NOT NULL
|
||||
)
|
||||
|
|
|
@ -7,20 +7,11 @@ use crate::model::{
|
|||
};
|
||||
use crate::{auto_method, DataManager};
|
||||
|
||||
#[cfg(feature = "sqlite")]
|
||||
use oiseau::SqliteRow;
|
||||
|
||||
#[cfg(feature = "postgres")]
|
||||
use oiseau::PostgresRow;
|
||||
|
||||
use oiseau::{execute, get, query_row, query_rows, params};
|
||||
use oiseau::{PostgresRow, execute, get, query_row, query_rows, params};
|
||||
|
||||
impl DataManager {
|
||||
/// Get a [`CustomEmoji`] from an SQL row.
|
||||
pub(crate) fn get_emoji_from_row(
|
||||
#[cfg(feature = "sqlite")] x: &SqliteRow<'_>,
|
||||
#[cfg(feature = "postgres")] x: &PostgresRow,
|
||||
) -> CustomEmoji {
|
||||
pub(crate) fn get_emoji_from_row(x: &PostgresRow) -> CustomEmoji {
|
||||
CustomEmoji {
|
||||
id: get!(x->0(i64)) as usize,
|
||||
owner: get!(x->1(i64)) as usize,
|
||||
|
|
|
@ -4,20 +4,11 @@ use crate::model::moderation::AuditLogEntry;
|
|||
use crate::model::{Error, Result, auth::IpBan, auth::User, permissions::FinePermission};
|
||||
use crate::{auto_method, DataManager};
|
||||
|
||||
#[cfg(feature = "sqlite")]
|
||||
use oiseau::SqliteRow;
|
||||
|
||||
#[cfg(feature = "postgres")]
|
||||
use oiseau::PostgresRow;
|
||||
|
||||
use oiseau::{execute, get, query_row, query_rows, params};
|
||||
use oiseau::{PostgresRow, execute, get, query_row, query_rows, params};
|
||||
|
||||
impl DataManager {
|
||||
/// Get a [`IpBan`] from an SQL row.
|
||||
pub(crate) fn get_ipban_from_row(
|
||||
#[cfg(feature = "sqlite")] x: &SqliteRow<'_>,
|
||||
#[cfg(feature = "postgres")] x: &PostgresRow,
|
||||
) -> IpBan {
|
||||
pub(crate) fn get_ipban_from_row(x: &PostgresRow) -> IpBan {
|
||||
IpBan {
|
||||
ip: get!(x->0(String)),
|
||||
created: get!(x->1(i64)) as usize,
|
||||
|
|
|
@ -2,20 +2,13 @@ use oiseau::cache::Cache;
|
|||
use crate::model::{Error, Result, auth::User, auth::IpBlock, permissions::FinePermission};
|
||||
use crate::{auto_method, DataManager};
|
||||
|
||||
#[cfg(feature = "sqlite")]
|
||||
use oiseau::SqliteRow;
|
||||
|
||||
#[cfg(feature = "postgres")]
|
||||
use oiseau::PostgresRow;
|
||||
|
||||
use oiseau::{execute, get, query_row, params};
|
||||
|
||||
impl DataManager {
|
||||
/// Get an [`IpBlock`] from an SQL row.
|
||||
pub(crate) fn get_ipblock_from_row(
|
||||
#[cfg(feature = "sqlite")] x: &SqliteRow<'_>,
|
||||
#[cfg(feature = "postgres")] x: &PostgresRow,
|
||||
) -> IpBlock {
|
||||
pub(crate) fn get_ipblock_from_row(x: &PostgresRow) -> IpBlock {
|
||||
IpBlock {
|
||||
id: get!(x->0(i64)) as usize,
|
||||
created: get!(x->1(i64)) as usize,
|
||||
|
|
|
@ -10,20 +10,11 @@ use crate::model::{
|
|||
};
|
||||
use crate::{auto_method, DataManager};
|
||||
|
||||
#[cfg(feature = "sqlite")]
|
||||
use oiseau::SqliteRow;
|
||||
|
||||
#[cfg(feature = "postgres")]
|
||||
use oiseau::PostgresRow;
|
||||
|
||||
use oiseau::{execute, get, query_row, query_rows, params};
|
||||
use oiseau::{PostgresRow, execute, get, query_row, query_rows, params};
|
||||
|
||||
impl DataManager {
|
||||
/// Get a [`CommunityMembership`] from an SQL row.
|
||||
pub(crate) fn get_membership_from_row(
|
||||
#[cfg(feature = "sqlite")] x: &SqliteRow<'_>,
|
||||
#[cfg(feature = "postgres")] x: &PostgresRow,
|
||||
) -> CommunityMembership {
|
||||
pub(crate) fn get_membership_from_row(x: &PostgresRow) -> CommunityMembership {
|
||||
CommunityMembership {
|
||||
id: get!(x->0(i64)) as usize,
|
||||
created: get!(x->1(i64)) as usize,
|
||||
|
|
|
@ -11,14 +11,7 @@ use serde::Serialize;
|
|||
use tetratto_shared::unix_epoch_timestamp;
|
||||
use crate::{auto_method, DataManager};
|
||||
|
||||
#[cfg(feature = "redis")]
|
||||
use oiseau::cache::redis::Commands;
|
||||
|
||||
#[cfg(feature = "sqlite")]
|
||||
use oiseau::SqliteRow;
|
||||
|
||||
#[cfg(feature = "postgres")]
|
||||
use oiseau::PostgresRow;
|
||||
use oiseau::{PostgresRow, cache::redis::Commands};
|
||||
|
||||
use oiseau::{execute, get, query_rows, params};
|
||||
|
||||
|
@ -29,10 +22,7 @@ struct DeleteMessageEvent {
|
|||
|
||||
impl DataManager {
|
||||
/// Get a [`Message`] from an SQL row.
|
||||
pub(crate) fn get_message_from_row(
|
||||
#[cfg(feature = "sqlite")] x: &SqliteRow<'_>,
|
||||
#[cfg(feature = "postgres")] x: &PostgresRow,
|
||||
) -> Message {
|
||||
pub(crate) fn get_message_from_row(x: &PostgresRow) -> Message {
|
||||
Message {
|
||||
id: get!(x->0(i64)) as usize,
|
||||
channel: get!(x->1(i64)) as usize,
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
mod apps;
|
||||
mod audit_log;
|
||||
mod auth;
|
||||
mod channels;
|
||||
mod common;
|
||||
mod communities;
|
||||
pub mod connections;
|
||||
|
@ -10,6 +11,7 @@ mod emojis;
|
|||
mod ipbans;
|
||||
mod ipblocks;
|
||||
mod memberships;
|
||||
mod messages;
|
||||
mod notifications;
|
||||
mod polls;
|
||||
mod pollvotes;
|
||||
|
@ -25,9 +27,4 @@ mod user_warnings;
|
|||
mod userblocks;
|
||||
mod userfollows;
|
||||
|
||||
#[cfg(feature = "redis")]
|
||||
mod channels;
|
||||
#[cfg(feature = "redis")]
|
||||
mod messages;
|
||||
|
||||
pub use drivers::DataManager;
|
||||
|
|
|
@ -3,23 +3,13 @@ use crate::model::socket::{CrudMessageType, PacketType, SocketMessage, SocketMet
|
|||
use crate::model::{Error, Result, auth::Notification, auth::User, permissions::FinePermission};
|
||||
use crate::{auto_method, DataManager};
|
||||
|
||||
#[cfg(feature = "redis")]
|
||||
use oiseau::cache::redis::Commands;
|
||||
|
||||
#[cfg(feature = "sqlite")]
|
||||
use oiseau::SqliteRow;
|
||||
|
||||
#[cfg(feature = "postgres")]
|
||||
use oiseau::PostgresRow;
|
||||
use oiseau::{PostgresRow, cache::redis::Commands};
|
||||
|
||||
use oiseau::{execute, get, query_rows, params};
|
||||
|
||||
impl DataManager {
|
||||
/// Get a [`Notification`] from an SQL row.
|
||||
pub(crate) fn get_notification_from_row(
|
||||
#[cfg(feature = "sqlite")] x: &SqliteRow<'_>,
|
||||
#[cfg(feature = "postgres")] x: &PostgresRow,
|
||||
) -> Notification {
|
||||
pub(crate) fn get_notification_from_row(x: &PostgresRow) -> Notification {
|
||||
Notification {
|
||||
id: get!(x->0(i64)) as usize,
|
||||
created: get!(x->1(i64)) as usize,
|
||||
|
|
|
@ -4,20 +4,13 @@ use crate::model::moderation::AuditLogEntry;
|
|||
use crate::model::{Error, Result, auth::User, permissions::FinePermission};
|
||||
use crate::{auto_method, DataManager};
|
||||
|
||||
#[cfg(feature = "sqlite")]
|
||||
use oiseau::SqliteRow;
|
||||
|
||||
#[cfg(feature = "postgres")]
|
||||
use oiseau::PostgresRow;
|
||||
|
||||
use oiseau::{execute, get, query_rows, params};
|
||||
|
||||
impl DataManager {
|
||||
/// Get a [`Poll`] from an SQL row.
|
||||
pub(crate) fn get_poll_from_row(
|
||||
#[cfg(feature = "sqlite")] x: &SqliteRow<'_>,
|
||||
#[cfg(feature = "postgres")] x: &PostgresRow,
|
||||
) -> Poll {
|
||||
pub(crate) fn get_poll_from_row(x: &PostgresRow) -> Poll {
|
||||
Poll {
|
||||
id: get!(x->0(i64)) as usize,
|
||||
owner: get!(x->1(i64)) as usize,
|
||||
|
|
|
@ -5,20 +5,13 @@ use crate::model::moderation::AuditLogEntry;
|
|||
use crate::model::{Error, Result, auth::User, permissions::FinePermission};
|
||||
use crate::{auto_method, DataManager};
|
||||
|
||||
#[cfg(feature = "sqlite")]
|
||||
use oiseau::SqliteRow;
|
||||
|
||||
#[cfg(feature = "postgres")]
|
||||
use oiseau::PostgresRow;
|
||||
|
||||
use oiseau::{execute, get, query_row, params};
|
||||
|
||||
impl DataManager {
|
||||
/// Get a [`PollVote`] from an SQL row.
|
||||
pub(crate) fn get_pollvote_from_row(
|
||||
#[cfg(feature = "sqlite")] x: &SqliteRow<'_>,
|
||||
#[cfg(feature = "postgres")] x: &PostgresRow,
|
||||
) -> PollVote {
|
||||
pub(crate) fn get_pollvote_from_row(x: &PostgresRow) -> PollVote {
|
||||
PollVote {
|
||||
id: get!(x->0(i64)) as usize,
|
||||
owner: get!(x->1(i64)) as usize,
|
||||
|
|
|
@ -15,15 +15,7 @@ use crate::model::{
|
|||
use tetratto_shared::unix_epoch_timestamp;
|
||||
use crate::{auto_method, DataManager};
|
||||
|
||||
#[cfg(feature = "sqlite")]
|
||||
use oiseau::SqliteRow;
|
||||
|
||||
#[cfg(feature = "postgres")]
|
||||
use oiseau::PostgresRow;
|
||||
|
||||
#[cfg(feature = "redis")]
|
||||
use oiseau::cache::redis::Commands;
|
||||
|
||||
use oiseau::{PostgresRow, cache::redis::Commands};
|
||||
use oiseau::{execute, get, query_row, query_rows, params};
|
||||
|
||||
pub type FullPost = (
|
||||
|
@ -101,10 +93,7 @@ macro_rules! private_post_replying {
|
|||
|
||||
impl DataManager {
|
||||
/// Get a [`Post`] from an SQL row.
|
||||
pub(crate) fn get_post_from_row(
|
||||
#[cfg(feature = "sqlite")] x: &SqliteRow<'_>,
|
||||
#[cfg(feature = "postgres")] x: &PostgresRow,
|
||||
) -> Post {
|
||||
pub(crate) fn get_post_from_row(x: &PostgresRow) -> Post {
|
||||
Post {
|
||||
id: get!(x->0(i64)) as usize,
|
||||
created: get!(x->1(i64)) as usize,
|
||||
|
@ -125,6 +114,7 @@ impl DataManager {
|
|||
poll_id: get!(x->13(i64)) as usize,
|
||||
title: get!(x->14(String)),
|
||||
is_open: get!(x->15(i32)) as i8 == 1,
|
||||
circle: get!(x->16(i64)) as usize,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1620,7 +1610,7 @@ impl DataManager {
|
|||
|
||||
let res = execute!(
|
||||
&conn,
|
||||
"INSERT INTO posts VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, DEFAULT, $13, $14, $15)",
|
||||
"INSERT INTO posts VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, DEFAULT, $13, $14, $15, $16)",
|
||||
params![
|
||||
&(data.id as i64),
|
||||
&(data.created as i64),
|
||||
|
@ -1641,6 +1631,7 @@ impl DataManager {
|
|||
&(data.poll_id as i64),
|
||||
&data.title,
|
||||
&{ if data.is_open { 1 } else { 0 } },
|
||||
&(data.circle as i64),
|
||||
]
|
||||
);
|
||||
|
||||
|
|
|
@ -11,20 +11,13 @@ use crate::model::{
|
|||
};
|
||||
use crate::{auto_method, DataManager};
|
||||
|
||||
#[cfg(feature = "sqlite")]
|
||||
use oiseau::SqliteRow;
|
||||
|
||||
#[cfg(feature = "postgres")]
|
||||
use oiseau::PostgresRow;
|
||||
|
||||
use oiseau::{execute, get, query_rows, params};
|
||||
|
||||
impl DataManager {
|
||||
/// Get a [`Question`] from an SQL row.
|
||||
pub(crate) fn get_question_from_row(
|
||||
#[cfg(feature = "sqlite")] x: &SqliteRow<'_>,
|
||||
#[cfg(feature = "postgres")] x: &PostgresRow,
|
||||
) -> Question {
|
||||
pub(crate) fn get_question_from_row(x: &PostgresRow) -> Question {
|
||||
Question {
|
||||
id: get!(x->0(i64)) as usize,
|
||||
created: get!(x->1(i64)) as usize,
|
||||
|
|
|
@ -7,20 +7,11 @@ use crate::model::{
|
|||
};
|
||||
use crate::{auto_method, DataManager};
|
||||
|
||||
#[cfg(feature = "sqlite")]
|
||||
use oiseau::SqliteRow;
|
||||
|
||||
#[cfg(feature = "postgres")]
|
||||
use oiseau::PostgresRow;
|
||||
|
||||
use oiseau::{execute, get, query_row, query_rows, params};
|
||||
use oiseau::{PostgresRow, execute, get, query_row, query_rows, params};
|
||||
|
||||
impl DataManager {
|
||||
/// Get a [`Reaction`] from an SQL row.
|
||||
pub(crate) fn get_reaction_from_row(
|
||||
#[cfg(feature = "sqlite")] x: &SqliteRow<'_>,
|
||||
#[cfg(feature = "postgres")] x: &PostgresRow,
|
||||
) -> Reaction {
|
||||
pub(crate) fn get_reaction_from_row(x: &PostgresRow) -> Reaction {
|
||||
Reaction {
|
||||
id: get!(x->0(i64)) as usize,
|
||||
created: get!(x->1(i64)) as usize,
|
||||
|
|
|
@ -3,20 +3,13 @@ use crate::model::moderation::AuditLogEntry;
|
|||
use crate::model::{Error, Result, auth::User, moderation::Report, permissions::FinePermission};
|
||||
use crate::{auto_method, DataManager};
|
||||
|
||||
#[cfg(feature = "sqlite")]
|
||||
use oiseau::SqliteRow;
|
||||
|
||||
#[cfg(feature = "postgres")]
|
||||
use oiseau::PostgresRow;
|
||||
|
||||
use oiseau::{execute, get, query_rows, params};
|
||||
|
||||
impl DataManager {
|
||||
/// Get a [`Report`] from an SQL row.
|
||||
pub(crate) fn get_report_from_row(
|
||||
#[cfg(feature = "sqlite")] x: &SqliteRow<'_>,
|
||||
#[cfg(feature = "postgres")] x: &PostgresRow,
|
||||
) -> Report {
|
||||
pub(crate) fn get_report_from_row(x: &PostgresRow) -> Report {
|
||||
Report {
|
||||
id: get!(x->0(i64)) as usize,
|
||||
created: get!(x->1(i64)) as usize,
|
||||
|
|
|
@ -3,20 +3,11 @@ use crate::model::requests::ActionType;
|
|||
use crate::model::{Error, Result, requests::ActionRequest, auth::User, permissions::FinePermission};
|
||||
use crate::DataManager;
|
||||
|
||||
#[cfg(feature = "sqlite")]
|
||||
use oiseau::SqliteRow;
|
||||
|
||||
#[cfg(feature = "postgres")]
|
||||
use oiseau::PostgresRow;
|
||||
|
||||
use oiseau::{execute, get, query_row, query_rows, params};
|
||||
use oiseau::{PostgresRow, execute, get, query_row, query_rows, params};
|
||||
|
||||
impl DataManager {
|
||||
/// Get an [`ActionRequest`] from an SQL row.
|
||||
pub(crate) fn get_request_from_row(
|
||||
#[cfg(feature = "sqlite")] x: &SqliteRow<'_>,
|
||||
#[cfg(feature = "postgres")] x: &PostgresRow,
|
||||
) -> ActionRequest {
|
||||
pub(crate) fn get_request_from_row(x: &PostgresRow) -> ActionRequest {
|
||||
ActionRequest {
|
||||
id: get!(x->0(i64)) as usize,
|
||||
created: get!(x->1(i64)) as usize,
|
||||
|
|
|
@ -3,20 +3,13 @@ use crate::model::stacks::StackPrivacy;
|
|||
use crate::model::{Error, Result, auth::User, stacks::StackBlock, permissions::FinePermission};
|
||||
use crate::{auto_method, DataManager};
|
||||
|
||||
#[cfg(feature = "sqlite")]
|
||||
use oiseau::SqliteRow;
|
||||
|
||||
#[cfg(feature = "postgres")]
|
||||
use oiseau::PostgresRow;
|
||||
|
||||
use oiseau::{execute, get, params, query_row, query_rows};
|
||||
|
||||
impl DataManager {
|
||||
/// Get a [`StackBlock`] from an SQL row.
|
||||
pub(crate) fn get_stackblock_from_row(
|
||||
#[cfg(feature = "sqlite")] x: &SqliteRow<'_>,
|
||||
#[cfg(feature = "postgres")] x: &PostgresRow,
|
||||
) -> StackBlock {
|
||||
pub(crate) fn get_stackblock_from_row(x: &PostgresRow) -> StackBlock {
|
||||
StackBlock {
|
||||
id: get!(x->0(i64)) as usize,
|
||||
created: get!(x->1(i64)) as usize,
|
||||
|
|
|
@ -8,20 +8,13 @@ use crate::model::{
|
|||
};
|
||||
use crate::{auto_method, DataManager};
|
||||
|
||||
#[cfg(feature = "sqlite")]
|
||||
use oiseau::SqliteRow;
|
||||
|
||||
#[cfg(feature = "postgres")]
|
||||
use oiseau::PostgresRow;
|
||||
|
||||
use oiseau::{execute, get, query_rows, params};
|
||||
|
||||
impl DataManager {
|
||||
/// Get a [`UserStack`] from an SQL row.
|
||||
pub(crate) fn get_stack_from_row(
|
||||
#[cfg(feature = "sqlite")] x: &SqliteRow<'_>,
|
||||
#[cfg(feature = "postgres")] x: &PostgresRow,
|
||||
) -> UserStack {
|
||||
pub(crate) fn get_stack_from_row(x: &PostgresRow) -> UserStack {
|
||||
UserStack {
|
||||
id: get!(x->0(i64)) as usize,
|
||||
created: get!(x->1(i64)) as usize,
|
||||
|
|
|
@ -4,20 +4,13 @@ use crate::model::permissions::FinePermission;
|
|||
use crate::model::{Error, Result, uploads::MediaUpload};
|
||||
use crate::{auto_method, DataManager};
|
||||
|
||||
#[cfg(feature = "sqlite")]
|
||||
use oiseau::SqliteRow;
|
||||
|
||||
#[cfg(feature = "postgres")]
|
||||
use oiseau::PostgresRow;
|
||||
|
||||
use oiseau::{execute, get, query_rows, params};
|
||||
|
||||
impl DataManager {
|
||||
/// Get a [`MediaUpload`] from an SQL row.
|
||||
pub(crate) fn get_upload_from_row(
|
||||
#[cfg(feature = "sqlite")] x: &SqliteRow<'_>,
|
||||
#[cfg(feature = "postgres")] x: &PostgresRow,
|
||||
) -> MediaUpload {
|
||||
pub(crate) fn get_upload_from_row(x: &PostgresRow) -> MediaUpload {
|
||||
MediaUpload {
|
||||
id: get!(x->0(i64)) as usize,
|
||||
created: get!(x->1(i64)) as usize,
|
||||
|
|
|
@ -4,20 +4,11 @@ use crate::model::moderation::AuditLogEntry;
|
|||
use crate::model::{Error, Result, auth::User, permissions::FinePermission};
|
||||
use crate::{auto_method, DataManager};
|
||||
|
||||
#[cfg(feature = "sqlite")]
|
||||
use oiseau::SqliteRow;
|
||||
|
||||
#[cfg(feature = "postgres")]
|
||||
use oiseau::PostgresRow;
|
||||
|
||||
use oiseau::{execute, get, query_row, query_rows, params};
|
||||
use oiseau::{PostgresRow, execute, get, query_row, query_rows, params};
|
||||
|
||||
impl DataManager {
|
||||
/// Get a [`UserWarning`] from an SQL row.
|
||||
pub(crate) fn get_user_warning_from_row(
|
||||
#[cfg(feature = "sqlite")] x: &SqliteRow<'_>,
|
||||
#[cfg(feature = "postgres")] x: &PostgresRow,
|
||||
) -> UserWarning {
|
||||
pub(crate) fn get_user_warning_from_row(x: &PostgresRow) -> UserWarning {
|
||||
UserWarning {
|
||||
id: get!(x->0(i64)) as usize,
|
||||
created: get!(x->1(i64)) as usize,
|
||||
|
|
|
@ -2,20 +2,11 @@ use oiseau::cache::Cache;
|
|||
use crate::model::{Error, Result, auth::User, auth::UserBlock, permissions::FinePermission};
|
||||
use crate::{auto_method, DataManager};
|
||||
|
||||
#[cfg(feature = "sqlite")]
|
||||
use oiseau::SqliteRow;
|
||||
|
||||
#[cfg(feature = "postgres")]
|
||||
use oiseau::PostgresRow;
|
||||
|
||||
use oiseau::{execute, get, query_row, query_rows, params};
|
||||
use oiseau::{PostgresRow, execute, get, query_row, query_rows, params};
|
||||
|
||||
impl DataManager {
|
||||
/// Get a [`UserBlock`] from an SQL row.
|
||||
pub(crate) fn get_userblock_from_row(
|
||||
#[cfg(feature = "sqlite")] x: &SqliteRow<'_>,
|
||||
#[cfg(feature = "postgres")] x: &PostgresRow,
|
||||
) -> UserBlock {
|
||||
pub(crate) fn get_userblock_from_row(x: &PostgresRow) -> UserBlock {
|
||||
UserBlock {
|
||||
id: get!(x->0(i64)) as usize,
|
||||
created: get!(x->1(i64)) as usize,
|
||||
|
|
|
@ -4,20 +4,11 @@ use crate::model::requests::{ActionRequest, ActionType};
|
|||
use crate::model::{Error, Result, auth::User, auth::UserFollow, permissions::FinePermission};
|
||||
use crate::{auto_method, DataManager};
|
||||
|
||||
#[cfg(feature = "sqlite")]
|
||||
use oiseau::SqliteRow;
|
||||
|
||||
#[cfg(feature = "postgres")]
|
||||
use oiseau::PostgresRow;
|
||||
|
||||
use oiseau::{execute, get, query_row, query_rows, params};
|
||||
use oiseau::{PostgresRow, execute, get, query_row, query_rows, params};
|
||||
|
||||
impl DataManager {
|
||||
/// Get a [`UserFollow`] from an SQL row.
|
||||
pub(crate) fn get_userfollow_from_row(
|
||||
#[cfg(feature = "sqlite")] x: &SqliteRow<'_>,
|
||||
#[cfg(feature = "postgres")] x: &PostgresRow,
|
||||
) -> UserFollow {
|
||||
pub(crate) fn get_userfollow_from_row(x: &PostgresRow) -> UserFollow {
|
||||
UserFollow {
|
||||
id: get!(x->0(i64)) as usize,
|
||||
created: get!(x->1(i64)) as usize,
|
||||
|
|
|
@ -4,10 +4,3 @@ pub mod model;
|
|||
|
||||
pub use database::DataManager;
|
||||
pub use oiseau::cache;
|
||||
|
||||
/// Tells us if pubsub capabilities are provided (via Redis).
|
||||
///
|
||||
/// If we have access to pubsub, community channels/messages will be available.
|
||||
///
|
||||
/// This is mostly used a flag for the UI.
|
||||
pub const PUBSUB_ENABLED: bool = cfg!(feature = "redis");
|
||||
|
|
|
@ -260,6 +260,10 @@ pub struct Post {
|
|||
pub title: String,
|
||||
/// If the post is "open". Posts can act as tickets in a forge community.
|
||||
pub is_open: bool,
|
||||
/// The ID of the circle this post belongs to. 0 means no circle is connected.
|
||||
///
|
||||
/// If circle is not 0, community should be 0 (and vice versa).
|
||||
pub circle: usize,
|
||||
}
|
||||
|
||||
impl Post {
|
||||
|
@ -287,6 +291,7 @@ impl Post {
|
|||
poll_id,
|
||||
title: String::new(),
|
||||
is_open: true,
|
||||
circle: 0,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
pub mod addr;
|
||||
pub mod apps;
|
||||
pub mod auth;
|
||||
pub mod channels;
|
||||
pub mod communities;
|
||||
pub mod communities_permissions;
|
||||
pub mod moderation;
|
||||
|
@ -8,15 +9,10 @@ pub mod oauth;
|
|||
pub mod permissions;
|
||||
pub mod reactions;
|
||||
pub mod requests;
|
||||
pub mod socket;
|
||||
pub mod stacks;
|
||||
pub mod uploads;
|
||||
|
||||
#[cfg(feature = "redis")]
|
||||
pub mod channels;
|
||||
|
||||
#[cfg(feature = "redis")]
|
||||
pub mod socket;
|
||||
|
||||
use std::fmt::Display;
|
||||
|
||||
use serde::{Deserialize, Serialize};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue