chore: remove features that don't compile

add: posts "circle" column
This commit is contained in:
trisua 2025-06-15 12:19:58 -04:00
parent 0310418837
commit 50704d27a9
42 changed files with 71 additions and 365 deletions

View file

@ -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"

View file

@ -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);

View file

@ -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=\"\") -%}")

View file

@ -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 -%}")

View file

@ -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();

View file

@ -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,

View file

@ -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,

View file

@ -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"] }

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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) }
);

View file

@ -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,

View file

@ -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)]

View file

@ -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
)

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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;

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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),
]
);

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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");

View file

@ -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,
}
}

View file

@ -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};