Split lemmy_db into lemmy_db_queries, lemmy_db_aggregates and lemmy_db_views

pull/1335/head
Felix Ableitner 2020-12-21 17:30:34 +01:00
parent e5a65d5807
commit d5efebbf47
82 changed files with 307 additions and 298 deletions

39
Cargo.lock generated
View File

@ -1717,8 +1717,9 @@ dependencies = [
"jsonwebtoken", "jsonwebtoken",
"lazy_static", "lazy_static",
"lemmy_apub", "lemmy_apub",
"lemmy_db", "lemmy_db_queries",
"lemmy_db_schema", "lemmy_db_schema",
"lemmy_db_views",
"lemmy_rate_limit", "lemmy_rate_limit",
"lemmy_structs", "lemmy_structs",
"lemmy_utils", "lemmy_utils",
@ -1762,8 +1763,9 @@ dependencies = [
"http-signature-normalization-reqwest", "http-signature-normalization-reqwest",
"itertools", "itertools",
"lazy_static", "lazy_static",
"lemmy_db", "lemmy_db_queries",
"lemmy_db_schema", "lemmy_db_schema",
"lemmy_db_views",
"lemmy_structs", "lemmy_structs",
"lemmy_utils", "lemmy_utils",
"lemmy_websocket", "lemmy_websocket",
@ -1784,7 +1786,18 @@ dependencies = [
] ]
[[package]] [[package]]
name = "lemmy_db" name = "lemmy_db_aggregates"
version = "0.1.0"
dependencies = [
"chrono",
"diesel",
"lemmy_db_queries",
"lemmy_db_schema",
"serde 1.0.118",
]
[[package]]
name = "lemmy_db_queries"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"bcrypt", "bcrypt",
@ -1816,6 +1829,17 @@ dependencies = [
"url", "url",
] ]
[[package]]
name = "lemmy_db_views"
version = "0.1.0"
dependencies = [
"diesel",
"lemmy_db_aggregates",
"lemmy_db_queries",
"lemmy_db_schema",
"serde 1.0.118",
]
[[package]] [[package]]
name = "lemmy_rate_limit" name = "lemmy_rate_limit"
version = "0.1.0" version = "0.1.0"
@ -1850,8 +1874,10 @@ dependencies = [
"lazy_static", "lazy_static",
"lemmy_api", "lemmy_api",
"lemmy_apub", "lemmy_apub",
"lemmy_db", "lemmy_db_aggregates",
"lemmy_db_queries",
"lemmy_db_schema", "lemmy_db_schema",
"lemmy_db_views",
"lemmy_rate_limit", "lemmy_rate_limit",
"lemmy_structs", "lemmy_structs",
"lemmy_utils", "lemmy_utils",
@ -1875,8 +1901,9 @@ dependencies = [
"actix-web", "actix-web",
"chrono", "chrono",
"diesel", "diesel",
"lemmy_db", "lemmy_db_queries",
"lemmy_db_schema", "lemmy_db_schema",
"lemmy_db_views",
"lemmy_utils", "lemmy_utils",
"log", "log",
"serde 1.0.118", "serde 1.0.118",
@ -1917,7 +1944,7 @@ dependencies = [
"background-jobs", "background-jobs",
"chrono", "chrono",
"diesel", "diesel",
"lemmy_db", "lemmy_db_queries",
"lemmy_db_schema", "lemmy_db_schema",
"lemmy_rate_limit", "lemmy_rate_limit",
"lemmy_structs", "lemmy_structs",

View File

@ -11,7 +11,7 @@ members = [
"lemmy_api", "lemmy_api",
"lemmy_apub", "lemmy_apub",
"lemmy_utils", "lemmy_utils",
"lemmy_db", "lemmy_db_queries",
"lemmy_db_schema", "lemmy_db_schema",
"lemmy_structs", "lemmy_structs",
"lemmy_rate_limit", "lemmy_rate_limit",
@ -23,7 +23,9 @@ lemmy_api = { path = "./lemmy_api" }
lemmy_apub = { path = "./lemmy_apub" } lemmy_apub = { path = "./lemmy_apub" }
lemmy_utils = { path = "./lemmy_utils" } lemmy_utils = { path = "./lemmy_utils" }
lemmy_db_schema = { path = "./lemmy_db_schema" } lemmy_db_schema = { path = "./lemmy_db_schema" }
lemmy_db = { path = "./lemmy_db" } lemmy_db_queries = { path = "lemmy_db_queries" }
lemmy_db_views = { path = "./lemmy_db_views" }
lemmy_db_aggregates = { path = "./lemmy_db_aggregates" }
lemmy_structs = { path = "./lemmy_structs" } lemmy_structs = { path = "./lemmy_structs" }
lemmy_rate_limit = { path = "./lemmy_rate_limit" } lemmy_rate_limit = { path = "./lemmy_rate_limit" }
lemmy_websocket = { path = "./lemmy_websocket" } lemmy_websocket = { path = "./lemmy_websocket" }

View File

@ -11,8 +11,9 @@ path = "src/lib.rs"
[dependencies] [dependencies]
lemmy_apub = { path = "../lemmy_apub" } lemmy_apub = { path = "../lemmy_apub" }
lemmy_utils = { path = "../lemmy_utils" } lemmy_utils = { path = "../lemmy_utils" }
lemmy_db = { path = "../lemmy_db" } lemmy_db_queries = { path = "../lemmy_db_queries" }
lemmy_db_schema = { path = "../lemmy_db_schema" } lemmy_db_schema = { path = "../lemmy_db_schema" }
lemmy_db_views = { path = "../lemmy_db_views" }
lemmy_structs = { path = "../lemmy_structs" } lemmy_structs = { path = "../lemmy_structs" }
lemmy_rate_limit = { path = "../lemmy_rate_limit" } lemmy_rate_limit = { path = "../lemmy_rate_limit" }
lemmy_websocket = { path = "../lemmy_websocket" } lemmy_websocket = { path = "../lemmy_websocket" }

View File

@ -12,10 +12,6 @@ use actix_web::web::Data;
use lemmy_apub::{ApubLikeableType, ApubObjectType}; use lemmy_apub::{ApubLikeableType, ApubObjectType};
use lemmy_db::{ use lemmy_db::{
source::comment::Comment_, source::comment::Comment_,
views::{
comment_report_view::{CommentReportQueryBuilder, CommentReportView},
comment_view::{CommentQueryBuilder, CommentView},
},
Crud, Crud,
Likeable, Likeable,
ListingType, ListingType,
@ -24,6 +20,10 @@ use lemmy_db::{
SortType, SortType,
}; };
use lemmy_db_schema::source::{comment::*, comment_report::*, moderator::*}; use lemmy_db_schema::source::{comment::*, comment_report::*, moderator::*};
use lemmy_db_views::{
comment_report_view::{CommentReportQueryBuilder, CommentReportView},
comment_view::{CommentQueryBuilder, CommentView},
};
use lemmy_structs::{blocking, comment::*, send_local_notifs}; use lemmy_structs::{blocking, comment::*, send_local_notifs};
use lemmy_utils::{ use lemmy_utils::{
apub::{make_apub_endpoint, EndpointType}, apub::{make_apub_endpoint, EndpointType},

View File

@ -16,15 +16,6 @@ use lemmy_db::{
community::{CommunityModerator_, Community_}, community::{CommunityModerator_, Community_},
post::Post_, post::Post_,
}, },
views::{
comment_view::CommentQueryBuilder,
community::{
community_follower_view::CommunityFollowerView,
community_moderator_view::CommunityModeratorView,
community_view::{CommunityQueryBuilder, CommunityView},
},
user_view::UserViewSafe,
},
ApubObject, ApubObject,
Bannable, Bannable,
Crud, Crud,
@ -36,6 +27,15 @@ use lemmy_db_schema::{
naive_now, naive_now,
source::{comment::Comment, community::*, moderator::*, post::Post, site::*}, source::{comment::Comment, community::*, moderator::*, post::Post, site::*},
}; };
use lemmy_db_views::{
comment_view::CommentQueryBuilder,
community::{
community_follower_view::CommunityFollowerView,
community_moderator_view::CommunityModeratorView,
community_view::{CommunityQueryBuilder, CommunityView},
},
user_view::UserViewSafe,
};
use lemmy_structs::{blocking, community::*}; use lemmy_structs::{blocking, community::*};
use lemmy_utils::{ use lemmy_utils::{
apub::{generate_actor_keypair, make_apub_endpoint, EndpointType}, apub::{generate_actor_keypair, make_apub_endpoint, EndpointType},

View File

@ -5,7 +5,6 @@ use lemmy_db::{
community::{CommunityModerator_, Community_}, community::{CommunityModerator_, Community_},
site::Site_, site::Site_,
}, },
views::community::community_user_ban_view::CommunityUserBanView,
Crud, Crud,
DbPool, DbPool,
}; };
@ -15,6 +14,10 @@ use lemmy_db_schema::source::{
site::Site, site::Site,
user::User_, user::User_,
}; };
use lemmy_db_views::community::{
community_user_ban_view::CommunityUserBanView,
community_view::CommunityView,
};
use lemmy_structs::{blocking, comment::*, community::*, post::*, site::*, user::*}; use lemmy_structs::{blocking, comment::*, community::*, post::*, site::*, user::*};
use lemmy_utils::{settings::Settings, APIError, ConnectionId, LemmyError}; use lemmy_utils::{settings::Settings, APIError, ConnectionId, LemmyError};
use lemmy_websocket::{serialize_websocket_message, LemmyContext, UserOperation}; use lemmy_websocket::{serialize_websocket_message, LemmyContext, UserOperation};
@ -47,7 +50,7 @@ pub(crate) async fn is_mod_or_admin(
community_id: i32, community_id: i32,
) -> Result<(), LemmyError> { ) -> Result<(), LemmyError> {
let is_mod_or_admin = blocking(pool, move |conn| { let is_mod_or_admin = blocking(pool, move |conn| {
Community::is_mod_or_admin(conn, user_id, community_id) CommunityView::is_mod_or_admin(conn, user_id, community_id)
}) })
.await?; .await?;
if !is_mod_or_admin { if !is_mod_or_admin {

View File

@ -10,21 +10,7 @@ use crate::{
}; };
use actix_web::web::Data; use actix_web::web::Data;
use lemmy_apub::{ApubLikeableType, ApubObjectType}; use lemmy_apub::{ApubLikeableType, ApubObjectType};
use lemmy_db::{ use lemmy_db::{source::post::Post_, Crud, Likeable, ListingType, Reportable, Saveable, SortType};
source::post::Post_,
views::{
comment_view::CommentQueryBuilder,
community::community_moderator_view::CommunityModeratorView,
post_report_view::{PostReportQueryBuilder, PostReportView},
post_view::{PostQueryBuilder, PostView},
},
Crud,
Likeable,
ListingType,
Reportable,
Saveable,
SortType,
};
use lemmy_db_schema::{ use lemmy_db_schema::{
naive_now, naive_now,
source::{ source::{
@ -33,6 +19,12 @@ use lemmy_db_schema::{
post_report::{PostReport, PostReportForm}, post_report::{PostReport, PostReportForm},
}, },
}; };
use lemmy_db_views::{
comment_view::CommentQueryBuilder,
community::community_moderator_view::CommunityModeratorView,
post_report_view::{PostReportQueryBuilder, PostReportView},
post_view::{PostQueryBuilder, PostView},
};
use lemmy_structs::{blocking, post::*}; use lemmy_structs::{blocking, post::*};
use lemmy_utils::{ use lemmy_utils::{
apub::{make_apub_endpoint, EndpointType}, apub::{make_apub_endpoint, EndpointType},

View File

@ -12,24 +12,6 @@ use lemmy_apub::fetcher::search_by_apub_id;
use lemmy_db::{ use lemmy_db::{
diesel_option_overwrite, diesel_option_overwrite,
source::{category::Category_, site::Site_}, source::{category::Category_, site::Site_},
views::{
comment_view::CommentQueryBuilder,
community::community_view::CommunityQueryBuilder,
moderator::{
mod_add_community_view::ModAddCommunityView,
mod_add_view::ModAddView,
mod_ban_from_community_view::ModBanFromCommunityView,
mod_ban_view::ModBanView,
mod_lock_post_view::ModLockPostView,
mod_remove_comment_view::ModRemoveCommentView,
mod_remove_community_view::ModRemoveCommunityView,
mod_remove_post_view::ModRemovePostView,
mod_sticky_post_view::ModStickyPostView,
},
post_view::PostQueryBuilder,
site_view::SiteView,
user_view::{UserQueryBuilder, UserViewSafe},
},
Crud, Crud,
SearchType, SearchType,
SortType, SortType,
@ -42,6 +24,24 @@ use lemmy_db_schema::{
site::{Site, *}, site::{Site, *},
}, },
}; };
use lemmy_db_views::{
comment_view::CommentQueryBuilder,
community::community_view::CommunityQueryBuilder,
moderator::{
mod_add_community_view::ModAddCommunityView,
mod_add_view::ModAddView,
mod_ban_from_community_view::ModBanFromCommunityView,
mod_ban_view::ModBanView,
mod_lock_post_view::ModLockPostView,
mod_remove_comment_view::ModRemoveCommentView,
mod_remove_community_view::ModRemoveCommunityView,
mod_remove_post_view::ModRemovePostView,
mod_sticky_post_view::ModStickyPostView,
},
post_view::PostQueryBuilder,
site_view::SiteView,
user_view::{UserQueryBuilder, UserViewSafe},
};
use lemmy_structs::{blocking, site::*, user::Register}; use lemmy_structs::{blocking, site::*, user::Register};
use lemmy_utils::{ use lemmy_utils::{
location_info, location_info,

View File

@ -26,19 +26,6 @@ use lemmy_db::{
user::User, user::User,
user_mention::UserMention_, user_mention::UserMention_,
}, },
views::{
comment_report_view::CommentReportView,
comment_view::CommentQueryBuilder,
community::{
community_follower_view::CommunityFollowerView,
community_moderator_view::CommunityModeratorView,
},
post_report_view::PostReportView,
post_view::PostQueryBuilder,
private_message_view::{PrivateMessageQueryBuilder, PrivateMessageView},
user_mention_view::{UserMentionQueryBuilder, UserMentionView},
user_view::{UserViewDangerous, UserViewSafe},
},
Crud, Crud,
Followable, Followable,
Joinable, Joinable,
@ -59,6 +46,19 @@ use lemmy_db_schema::{
user_mention::*, user_mention::*,
}, },
}; };
use lemmy_db_views::{
comment_report_view::CommentReportView,
comment_view::CommentQueryBuilder,
community::{
community_follower_view::CommunityFollowerView,
community_moderator_view::CommunityModeratorView,
},
post_report_view::PostReportView,
post_view::PostQueryBuilder,
private_message_view::{PrivateMessageQueryBuilder, PrivateMessageView},
user_mention_view::{UserMentionQueryBuilder, UserMentionView},
user_view::{UserViewDangerous, UserViewSafe},
};
use lemmy_structs::{blocking, send_email_to_user, user::*}; use lemmy_structs::{blocking, send_email_to_user, user::*};
use lemmy_utils::{ use lemmy_utils::{
apub::{generate_actor_keypair, make_apub_endpoint, EndpointType}, apub::{generate_actor_keypair, make_apub_endpoint, EndpointType},

View File

@ -10,8 +10,9 @@ path = "src/lib.rs"
[dependencies] [dependencies]
lemmy_utils = { path = "../lemmy_utils" } lemmy_utils = { path = "../lemmy_utils" }
lemmy_db = { path = "../lemmy_db" } lemmy_db_queries = { path = "../lemmy_db_queries" }
lemmy_db_schema = { path = "../lemmy_db_schema" } lemmy_db_schema = { path = "../lemmy_db_schema" }
lemmy_db_views = { path = "../lemmy_db_views" }
lemmy_structs = { path = "../lemmy_structs" } lemmy_structs = { path = "../lemmy_structs" }
lemmy_websocket = { path = "../lemmy_websocket" } lemmy_websocket = { path = "../lemmy_websocket" }
diesel = "1.4.5" diesel = "1.4.5"

View File

@ -4,11 +4,12 @@ use activitystreams::{
base::ExtendsExt, base::ExtendsExt,
}; };
use anyhow::Context; use anyhow::Context;
use lemmy_db::{source::comment::Comment_, views::comment_view::CommentView, Crud, Likeable}; use lemmy_db::{source::comment::Comment_, Crud, Likeable};
use lemmy_db_schema::source::{ use lemmy_db_schema::source::{
comment::{Comment, CommentLike, CommentLikeForm}, comment::{Comment, CommentLike, CommentLikeForm},
post::Post, post::Post,
}; };
use lemmy_db_views::comment_view::CommentView;
use lemmy_structs::{blocking, comment::CommentResponse, send_local_notifs}; use lemmy_structs::{blocking, comment::CommentResponse, send_local_notifs};
use lemmy_utils::{location_info, utils::scrape_text_for_mentions, LemmyError}; use lemmy_utils::{location_info, utils::scrape_text_for_mentions, LemmyError};
use lemmy_websocket::{messages::SendComment, LemmyContext, UserOperation}; use lemmy_websocket::{messages::SendComment, LemmyContext, UserOperation};

View File

@ -1,7 +1,8 @@
use crate::activities::receive::get_actor_as_user; use crate::activities::receive::get_actor_as_user;
use activitystreams::activity::{Dislike, Like}; use activitystreams::activity::{Dislike, Like};
use lemmy_db::{source::comment::Comment_, views::comment_view::CommentView, Likeable}; use lemmy_db::{source::comment::Comment_, Likeable};
use lemmy_db_schema::source::comment::{Comment, CommentLike}; use lemmy_db_schema::source::comment::{Comment, CommentLike};
use lemmy_db_views::comment_view::CommentView;
use lemmy_structs::{blocking, comment::CommentResponse}; use lemmy_structs::{blocking, comment::CommentResponse};
use lemmy_utils::LemmyError; use lemmy_utils::LemmyError;
use lemmy_websocket::{messages::SendComment, LemmyContext, UserOperation}; use lemmy_websocket::{messages::SendComment, LemmyContext, UserOperation};

View File

@ -4,12 +4,9 @@ use activitystreams::{
base::{AnyBase, ExtendsExt}, base::{AnyBase, ExtendsExt},
}; };
use anyhow::Context; use anyhow::Context;
use lemmy_db::{ use lemmy_db::{source::community::Community_, ApubObject};
source::community::Community_,
views::community::community_view::CommunityView,
ApubObject,
};
use lemmy_db_schema::source::community::Community; use lemmy_db_schema::source::community::Community;
use lemmy_db_views::community::community_view::CommunityView;
use lemmy_structs::{blocking, community::CommunityResponse}; use lemmy_structs::{blocking, community::CommunityResponse};
use lemmy_utils::{location_info, LemmyError}; use lemmy_utils::{location_info, LemmyError};
use lemmy_websocket::{messages::SendCommunityRoomMessage, LemmyContext, UserOperation}; use lemmy_websocket::{messages::SendCommunityRoomMessage, LemmyContext, UserOperation};

View File

@ -4,8 +4,9 @@ use activitystreams::{
prelude::*, prelude::*,
}; };
use anyhow::Context; use anyhow::Context;
use lemmy_db::{source::post::Post_, views::post_view::PostView, Likeable}; use lemmy_db::{source::post::Post_, Likeable};
use lemmy_db_schema::source::post::{Post, PostLike, PostLikeForm}; use lemmy_db_schema::source::post::{Post, PostLike, PostLikeForm};
use lemmy_db_views::post_view::PostView;
use lemmy_structs::{blocking, post::PostResponse}; use lemmy_structs::{blocking, post::PostResponse};
use lemmy_utils::{location_info, LemmyError}; use lemmy_utils::{location_info, LemmyError};
use lemmy_websocket::{messages::SendPost, LemmyContext, UserOperation}; use lemmy_websocket::{messages::SendPost, LemmyContext, UserOperation};

View File

@ -1,7 +1,8 @@
use crate::activities::receive::get_actor_as_user; use crate::activities::receive::get_actor_as_user;
use activitystreams::activity::{Dislike, Like}; use activitystreams::activity::{Dislike, Like};
use lemmy_db::{source::post::Post_, views::post_view::PostView, Likeable}; use lemmy_db::{source::post::Post_, Likeable};
use lemmy_db_schema::source::post::{Post, PostLike}; use lemmy_db_schema::source::post::{Post, PostLike};
use lemmy_db_views::post_view::PostView;
use lemmy_structs::{blocking, post::PostResponse}; use lemmy_structs::{blocking, post::PostResponse};
use lemmy_utils::LemmyError; use lemmy_utils::LemmyError;
use lemmy_websocket::{messages::SendPost, LemmyContext, UserOperation}; use lemmy_websocket::{messages::SendPost, LemmyContext, UserOperation};

View File

@ -13,11 +13,9 @@ use activitystreams::{
public, public,
}; };
use anyhow::{anyhow, Context}; use anyhow::{anyhow, Context};
use lemmy_db::{ use lemmy_db::source::private_message::PrivateMessage_;
source::private_message::PrivateMessage_,
views::private_message_view::PrivateMessageView,
};
use lemmy_db_schema::source::private_message::PrivateMessage; use lemmy_db_schema::source::private_message::PrivateMessage;
use lemmy_db_views::private_message_view::PrivateMessageView;
use lemmy_structs::{blocking, user::PrivateMessageResponse}; use lemmy_structs::{blocking, user::PrivateMessageResponse};
use lemmy_utils::{location_info, LemmyError}; use lemmy_utils::{location_info, LemmyError};
use lemmy_websocket::{messages::SendUserRoomMessage, LemmyContext, UserOperation}; use lemmy_websocket::{messages::SendUserRoomMessage, LemmyContext, UserOperation};

View File

@ -23,8 +23,9 @@ use activitystreams::{
}; };
use anyhow::Context; use anyhow::Context;
use itertools::Itertools; use itertools::Itertools;
use lemmy_db::{views::community::community_follower_view::CommunityFollowerView, DbPool}; use lemmy_db::DbPool;
use lemmy_db_schema::source::community::Community; use lemmy_db_schema::source::community::Community;
use lemmy_db_views::community::community_follower_view::CommunityFollowerView;
use lemmy_structs::blocking; use lemmy_structs::blocking;
use lemmy_utils::{location_info, settings::Settings, LemmyError}; use lemmy_utils::{location_info, settings::Settings, LemmyError};
use lemmy_websocket::LemmyContext; use lemmy_websocket::LemmyContext;

View File

@ -12,19 +12,7 @@ use activitystreams::{base::BaseExt, collection::OrderedCollection, prelude::*};
use anyhow::{anyhow, Context}; use anyhow::{anyhow, Context};
use chrono::NaiveDateTime; use chrono::NaiveDateTime;
use diesel::result::Error::NotFound; use diesel::result::Error::NotFound;
use lemmy_db::{ use lemmy_db::{source::user::User, ApubObject, Crud, Joinable, SearchType};
source::user::User,
views::{
comment_view::CommentView,
community::community_view::CommunityView,
post_view::PostView,
user_view::UserViewSafe,
},
ApubObject,
Crud,
Joinable,
SearchType,
};
use lemmy_db_schema::{ use lemmy_db_schema::{
naive_now, naive_now,
source::{ source::{
@ -34,6 +22,12 @@ use lemmy_db_schema::{
user::User_, user::User_,
}, },
}; };
use lemmy_db_views::{
comment_view::CommentView,
community::community_view::CommunityView,
post_view::PostView,
user_view::UserViewSafe,
};
use lemmy_structs::{blocking, site::SearchResponse}; use lemmy_structs::{blocking, site::SearchResponse};
use lemmy_utils::{ use lemmy_utils::{
location_info, location_info,

View File

@ -9,11 +9,9 @@ use activitystreams::{
collection::{CollectionExt, OrderedCollection, UnorderedCollection}, collection::{CollectionExt, OrderedCollection, UnorderedCollection},
}; };
use actix_web::{body::Body, web, HttpResponse}; use actix_web::{body::Body, web, HttpResponse};
use lemmy_db::{ use lemmy_db::source::{community::Community_, post::Post_};
source::{community::Community_, post::Post_},
views::community::community_follower_view::CommunityFollowerView,
};
use lemmy_db_schema::source::{community::Community, post::Post}; use lemmy_db_schema::source::{community::Community, post::Post};
use lemmy_db_views::community::community_follower_view::CommunityFollowerView;
use lemmy_structs::blocking; use lemmy_structs::blocking;
use lemmy_utils::LemmyError; use lemmy_utils::LemmyError;
use lemmy_websocket::LemmyContext; use lemmy_websocket::LemmyContext;

View File

@ -26,17 +26,12 @@ use activitystreams::{
}; };
use actix_web::{web, HttpRequest, HttpResponse}; use actix_web::{web, HttpRequest, HttpResponse};
use anyhow::{anyhow, Context}; use anyhow::{anyhow, Context};
use lemmy_db::{ use lemmy_db::{source::community::Community_, ApubObject, DbPool, Followable};
source::community::Community_,
views::community::community_user_ban_view::CommunityUserBanView,
ApubObject,
DbPool,
Followable,
};
use lemmy_db_schema::source::{ use lemmy_db_schema::source::{
community::{Community, CommunityFollower, CommunityFollowerForm}, community::{Community, CommunityFollower, CommunityFollowerForm},
user::User_, user::User_,
}; };
use lemmy_db_views::community::community_user_ban_view::CommunityUserBanView;
use lemmy_structs::blocking; use lemmy_structs::blocking;
use lemmy_utils::{location_info, LemmyError}; use lemmy_utils::{location_info, LemmyError};
use lemmy_websocket::LemmyContext; use lemmy_websocket::LemmyContext;

View File

@ -22,11 +22,12 @@ use activitystreams::{
}; };
use activitystreams_ext::Ext2; use activitystreams_ext::Ext2;
use anyhow::Context; use anyhow::Context;
use lemmy_db::{views::community::community_moderator_view::CommunityModeratorView, DbPool}; use lemmy_db::DbPool;
use lemmy_db_schema::{ use lemmy_db_schema::{
naive_now, naive_now,
source::community::{Community, CommunityForm}, source::community::{Community, CommunityForm},
}; };
use lemmy_db_views::community::community_moderator_view::CommunityModeratorView;
use lemmy_structs::blocking; use lemmy_structs::blocking;
use lemmy_utils::{ use lemmy_utils::{
location_info, location_info,

View File

@ -0,0 +1,11 @@
[package]
name = "lemmy_db_aggregates"
version = "0.1.0"
edition = "2018"
[dependencies]
lemmy_db_schema = { path = "../lemmy_db_schema" }
lemmy_db_queries = { path = "../lemmy_db_queries" }
diesel = { version = "1.4.5", features = ["postgres","chrono","r2d2","serde_json"] }
serde = { version = "1.0.118", features = ["derive"] }
chrono = { version = "0.4.19", features = ["serde"] }

View File

@ -22,19 +22,13 @@ impl CommentAggregates {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use crate::{ use crate::comment_aggregates::CommentAggregates;
aggregates::comment_aggregates::CommentAggregates, use lemmy_db::{establish_unpooled_connection, Crud, Likeable, ListingType, SortType};
source::{ use lemmy_db_schema::source::{
comment::{Comment, CommentForm, CommentLike, CommentLikeForm}, comment::{Comment, CommentForm, CommentLike, CommentLikeForm},
community::{Community, CommunityForm}, community::{Community, CommunityForm},
post::{Post, PostForm}, post::{Post, PostForm},
user::{UserForm, User_}, user::{UserForm, User_},
},
tests::establish_unpooled_connection,
Crud,
Likeable,
ListingType,
SortType,
}; };
#[test] #[test]

View File

@ -22,14 +22,8 @@ impl CommunityAggregates {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use crate::{ use crate::community_aggregates::CommunityAggregates;
aggregates::community_aggregates::CommunityAggregates, use lemmy_db::{establish_unpooled_connection, Crud, Followable, ListingType, SortType};
tests::establish_unpooled_connection,
Crud,
Followable,
ListingType,
SortType,
};
use lemmy_db_schema::source::{ use lemmy_db_schema::source::{
comment::{Comment, CommentForm}, comment::{Comment, CommentForm},
community::{Community, CommunityFollower, CommunityFollowerForm, CommunityForm}, community::{Community, CommunityFollower, CommunityFollowerForm, CommunityForm},

View File

@ -24,14 +24,8 @@ impl PostAggregates {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use crate::{ use crate::post_aggregates::PostAggregates;
aggregates::post_aggregates::PostAggregates, use lemmy_db::{establish_unpooled_connection, Crud, Likeable, ListingType, SortType};
tests::establish_unpooled_connection,
Crud,
Likeable,
ListingType,
SortType,
};
use lemmy_db_schema::source::{ use lemmy_db_schema::source::{
comment::{Comment, CommentForm}, comment::{Comment, CommentForm},
community::{Community, CommunityForm}, community::{Community, CommunityForm},

View File

@ -21,17 +21,13 @@ impl SiteAggregates {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use crate::{ use crate::site_aggregates::SiteAggregates;
aggregates::site_aggregates::SiteAggregates, use lemmy_db::{establish_unpooled_connection, Crud, ListingType, SortType};
tests::establish_unpooled_connection,
Crud,
ListingType,
SortType,
};
use lemmy_db_schema::source::{ use lemmy_db_schema::source::{
comment::{Comment, CommentForm}, comment::{Comment, CommentForm},
community::{Community, CommunityForm}, community::{Community, CommunityForm},
post::{Post, PostForm}, post::{Post, PostForm},
site::{Site, SiteForm},
user::{UserForm, User_}, user::{UserForm, User_},
}; };

View File

@ -23,14 +23,8 @@ impl UserAggregates {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use crate::{ use crate::user_aggregates::UserAggregates;
aggregates::user_aggregates::UserAggregates, use lemmy_db::{establish_unpooled_connection, Crud, Likeable, ListingType, SortType};
tests::establish_unpooled_connection,
Crud,
Likeable,
ListingType,
SortType,
};
use lemmy_db_schema::source::{ use lemmy_db_schema::source::{
comment::{Comment, CommentForm, CommentLike, CommentLikeForm}, comment::{Comment, CommentForm, CommentLike, CommentLikeForm},
community::{Community, CommunityForm}, community::{Community, CommunityForm},

View File

@ -1,5 +1,5 @@
[package] [package]
name = "lemmy_db" name = "lemmy_db_queries"
version = "0.1.0" version = "0.1.0"
edition = "2018" edition = "2018"

View File

@ -14,9 +14,7 @@ use regex::Regex;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use std::{env, env::VarError}; use std::{env, env::VarError};
pub mod aggregates;
pub mod source; pub mod source;
pub mod views;
pub type DbPool = diesel::r2d2::Pool<diesel::r2d2::ConnectionManager<diesel::PgConnection>>; pub type DbPool = diesel::r2d2::Pool<diesel::r2d2::ConnectionManager<diesel::PgConnection>>;
@ -133,7 +131,7 @@ impl<T> MaybeOptional<T> for Option<T> {
} }
} }
pub(crate) trait ToSafe { pub trait ToSafe {
type SafeColumns; type SafeColumns;
fn safe_columns_tuple() -> Self::SafeColumns; fn safe_columns_tuple() -> Self::SafeColumns;
} }
@ -202,12 +200,28 @@ pub fn diesel_option_overwrite(opt: &Option<String>) -> Option<Option<String>> {
} }
} }
embed_migrations!();
pub fn establish_unpooled_connection() -> PgConnection {
let db_url = match get_database_url_from_env() {
Ok(url) => url,
Err(e) => panic!(
"Failed to read database URL from env var LEMMY_DATABASE_URL: {}",
e
),
};
let conn =
PgConnection::establish(&db_url).unwrap_or_else(|_| panic!("Error connecting to {}", db_url));
embedded_migrations::run(&conn).unwrap();
conn
}
lazy_static! { lazy_static! {
static ref EMAIL_REGEX: Regex = static ref EMAIL_REGEX: Regex =
Regex::new(r"^[a-zA-Z0-9.!#$%&*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$").unwrap(); Regex::new(r"^[a-zA-Z0-9.!#$%&*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$").unwrap();
} }
pub(crate) mod functions { pub mod functions {
use diesel::sql_types::*; use diesel::sql_types::*;
sql_function! { sql_function! {
@ -218,24 +232,7 @@ pub(crate) mod functions {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use super::fuzzy_search; use super::fuzzy_search;
use crate::{get_database_url_from_env, is_email_regex}; use crate::is_email_regex;
use diesel::{Connection, PgConnection};
embed_migrations!();
pub fn establish_unpooled_connection() -> PgConnection {
let db_url = match get_database_url_from_env() {
Ok(url) => url,
Err(e) => panic!(
"Failed to read database URL from env var LEMMY_DATABASE_URL: {}",
e
),
};
let conn =
PgConnection::establish(&db_url).unwrap_or_else(|_| panic!("Error connecting to {}", db_url));
embedded_migrations::run(&conn).unwrap();
conn
}
#[test] #[test]
fn test_fuzzy_search() { fn test_fuzzy_search() {

View File

@ -87,7 +87,13 @@ impl Activity_ for Activity {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use crate::{tests::establish_unpooled_connection, Crud, ListingType, SortType}; use crate::{
establish_unpooled_connection,
source::activity::Activity_,
Crud,
ListingType,
SortType,
};
use lemmy_db_schema::source::{ use lemmy_db_schema::source::{
activity::{Activity, ActivityForm}, activity::{Activity, ActivityForm},
user::{UserForm, User_}, user::{UserForm, User_},

View File

@ -36,7 +36,7 @@ impl Category_ for Category {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use crate::tests::establish_unpooled_connection; use crate::{establish_unpooled_connection, source::category::Category_};
use lemmy_db_schema::source::category::Category; use lemmy_db_schema::source::category::Category;
#[test] #[test]

View File

@ -204,14 +204,7 @@ impl Saveable<CommentSavedForm> for CommentSaved {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use crate::{ use crate::{establish_unpooled_connection, Crud, Likeable, ListingType, Saveable, SortType};
tests::establish_unpooled_connection,
Crud,
Likeable,
ListingType,
Saveable,
SortType,
};
use lemmy_db_schema::source::{ use lemmy_db_schema::source::{
comment::*, comment::*,
community::{Community, CommunityForm}, community::{Community, CommunityForm},

View File

@ -1,11 +1,4 @@
use crate::{ use crate::{ApubObject, Bannable, Crud, Followable, Joinable};
views::{community::community_moderator_view::CommunityModeratorView, user_view::UserViewSafe},
ApubObject,
Bannable,
Crud,
Followable,
Joinable,
};
use diesel::{dsl::*, result::Error, *}; use diesel::{dsl::*, result::Error, *};
use lemmy_db_schema::{ use lemmy_db_schema::{
naive_now, naive_now,
@ -138,9 +131,7 @@ pub trait Community_ {
community_id: i32, community_id: i32,
new_creator_id: i32, new_creator_id: i32,
) -> Result<Community, Error>; ) -> Result<Community, Error>;
fn community_mods_and_admins(conn: &PgConnection, community_id: i32) -> Result<Vec<i32>, Error>;
fn distinct_federated_communities(conn: &PgConnection) -> Result<Vec<String>, Error>; fn distinct_federated_communities(conn: &PgConnection) -> Result<Vec<String>, Error>;
fn is_mod_or_admin(conn: &PgConnection, user_id: i32, community_id: i32) -> bool;
} }
impl Community_ for Community { impl Community_ for Community {
@ -196,27 +187,10 @@ impl Community_ for Community {
.get_result::<Self>(conn) .get_result::<Self>(conn)
} }
fn community_mods_and_admins(conn: &PgConnection, community_id: i32) -> Result<Vec<i32>, Error> {
let mut mods_and_admins: Vec<i32> = Vec::new();
mods_and_admins.append(
&mut CommunityModeratorView::for_community(conn, community_id)
.map(|v| v.into_iter().map(|m| m.moderator.id).collect())?,
);
mods_and_admins
.append(&mut UserViewSafe::admins(conn).map(|v| v.into_iter().map(|a| a.user.id).collect())?);
Ok(mods_and_admins)
}
fn distinct_federated_communities(conn: &PgConnection) -> Result<Vec<String>, Error> { fn distinct_federated_communities(conn: &PgConnection) -> Result<Vec<String>, Error> {
use lemmy_db_schema::schema::community::dsl::*; use lemmy_db_schema::schema::community::dsl::*;
community.select(actor_id).distinct().load::<String>(conn) community.select(actor_id).distinct().load::<String>(conn)
} }
fn is_mod_or_admin(conn: &PgConnection, user_id: i32, community_id: i32) -> bool {
Self::community_mods_and_admins(conn, community_id)
.unwrap_or_default()
.contains(&user_id)
}
} }
impl Joinable<CommunityModeratorForm> for CommunityModerator { impl Joinable<CommunityModeratorForm> for CommunityModerator {
@ -347,7 +321,7 @@ impl Followable<CommunityFollowerForm> for CommunityFollower {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use crate::{ use crate::{
tests::establish_unpooled_connection, establish_unpooled_connection,
Bannable, Bannable,
Crud, Crud,
Followable, Followable,

View File

@ -197,7 +197,7 @@ impl Crud<ModAddForm> for ModAdd {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use crate::{tests::establish_unpooled_connection, Crud, ListingType, SortType}; use crate::{establish_unpooled_connection, Crud, ListingType, SortType};
use lemmy_db_schema::source::{comment::*, community::*, moderator::*, post::*, user::*}; use lemmy_db_schema::source::{comment::*, community::*, moderator::*, post::*, user::*};
// use Crud; // use Crud;

View File

@ -72,7 +72,13 @@ fn bytes_to_hex(bytes: Vec<u8>) -> String {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use crate::{tests::establish_unpooled_connection, Crud, ListingType, SortType}; use crate::{
establish_unpooled_connection,
source::password_reset_request::PasswordResetRequest_,
Crud,
ListingType,
SortType,
};
use lemmy_db_schema::source::{password_reset_request::PasswordResetRequest, user::*}; use lemmy_db_schema::source::{password_reset_request::PasswordResetRequest, user::*};
#[test] #[test]

View File

@ -225,7 +225,7 @@ impl Readable<PostReadForm> for PostRead {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use crate::{source::post::*, tests::establish_unpooled_connection, ListingType, SortType}; use crate::{establish_unpooled_connection, source::post::*, ListingType, SortType};
use lemmy_db_schema::source::{ use lemmy_db_schema::source::{
community::{Community, CommunityForm}, community::{Community, CommunityForm},
user::*, user::*,

View File

@ -139,7 +139,13 @@ impl PrivateMessage_ for PrivateMessage {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use crate::{tests::establish_unpooled_connection, ListingType, SortType}; use crate::{
establish_unpooled_connection,
source::private_message::PrivateMessage_,
Crud,
ListingType,
SortType,
};
use lemmy_db_schema::source::{private_message::*, user::*}; use lemmy_db_schema::source::{private_message::*, user::*};
#[test] #[test]

View File

@ -297,7 +297,7 @@ impl User for User_ {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use crate::{source::user::*, tests::establish_unpooled_connection, ListingType, SortType}; use crate::{establish_unpooled_connection, source::user::*, ListingType, SortType};
#[test] #[test]
fn test_crud() { fn test_crud() {

View File

@ -73,7 +73,7 @@ impl UserMention_ for UserMention {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use crate::{tests::establish_unpooled_connection, Crud, ListingType, SortType}; use crate::{establish_unpooled_connection, Crud, ListingType, SortType};
use lemmy_db_schema::source::{ use lemmy_db_schema::source::{
comment::*, comment::*,
community::{Community, CommunityForm}, community::{Community, CommunityForm},

View File

@ -6,7 +6,7 @@ use chrono::NaiveDateTime;
pub mod schema; pub mod schema;
pub mod source; pub mod source;
// TODO: can probably move this back to lemmy_db // TODO: can probably move this back to lemmy_db_queries
pub fn naive_now() -> NaiveDateTime { pub fn naive_now() -> NaiveDateTime {
chrono::prelude::Utc::now().naive_utc() chrono::prelude::Utc::now().naive_utc()
} }

View File

@ -1,9 +1,7 @@
use crate::{schema::comment_report, source::comment::Comment}; use crate::{schema::comment_report, source::comment::Comment};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[derive( #[derive(Identifiable, Queryable, Associations, PartialEq, Serialize, Deserialize, Debug, Clone)]
Identifiable, Queryable, Associations, PartialEq, Serialize, Deserialize, Debug, Clone,
)]
#[belongs_to(Comment)] #[belongs_to(Comment)]
#[table_name = "comment_report"] #[table_name = "comment_report"]
pub struct CommentReport { pub struct CommentReport {

View File

@ -1,9 +1,7 @@
use crate::{schema::post_report, source::post::Post}; use crate::{schema::post_report, source::post::Post};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[derive( #[derive(Identifiable, Queryable, Associations, PartialEq, Serialize, Deserialize, Debug, Clone)]
Identifiable, Queryable, Associations, PartialEq, Serialize, Deserialize, Debug, Clone,
)]
#[belongs_to(Post)] #[belongs_to(Post)]
#[table_name = "post_report"] #[table_name = "post_report"]
pub struct PostReport { pub struct PostReport {

View File

@ -0,0 +1,11 @@
[package]
name = "lemmy_db_views"
version = "0.1.0"
edition = "2018"
[dependencies]
lemmy_db_queries = { path = "../lemmy_db_queries" }
lemmy_db_schema = { path = "../lemmy_db_schema" }
lemmy_db_aggregates = { path = "../lemmy_db_aggregates" }
diesel = { version = "1.4.5", features = ["postgres","chrono","r2d2","serde_json"] }
serde = { version = "1.0.118", features = ["derive"] }

View File

@ -1,5 +1,6 @@
use crate::{limit_and_offset, views::ViewToVec, MaybeOptional, ToSafe}; use crate::ViewToVec;
use diesel::{result::Error, *}; use diesel::{result::Error, *};
use lemmy_db::{limit_and_offset, MaybeOptional, ToSafe};
use lemmy_db_schema::{ use lemmy_db_schema::{
schema::{comment, comment_report, community, post, user_, user_alias_1, user_alias_2}, schema::{comment, comment_report, community, post, user_, user_alias_1, user_alias_2},
source::{ source::{

View File

@ -1,15 +1,15 @@
use crate::{ use crate::ViewToVec;
aggregates::comment_aggregates::CommentAggregates, use diesel::{result::Error, *};
use lemmy_db::{
functions::hot_rank, functions::hot_rank,
fuzzy_search, fuzzy_search,
limit_and_offset, limit_and_offset,
views::ViewToVec,
ListingType, ListingType,
MaybeOptional, MaybeOptional,
SortType, SortType,
ToSafe, ToSafe,
}; };
use diesel::{result::Error, *}; use lemmy_db_aggregates::comment_aggregates::CommentAggregates;
use lemmy_db_schema::{ use lemmy_db_schema::{
schema::{ schema::{
comment, comment,
@ -418,7 +418,9 @@ impl ViewToVec for CommentView {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use crate::{tests::establish_unpooled_connection, views::comment_view::*, Crud, Likeable, *}; use crate::comment_view::*;
use lemmy_db::{establish_unpooled_connection, Crud, Likeable, ListingType, SortType};
use lemmy_db_aggregates::comment_aggregates::CommentAggregates;
use lemmy_db_schema::source::{comment::*, community::*, post::*, user::*}; use lemmy_db_schema::source::{comment::*, community::*, post::*, user::*};
#[test] #[test]

View File

@ -1,5 +1,6 @@
use crate::{views::ViewToVec, ToSafe}; use crate::ViewToVec;
use diesel::{result::Error, *}; use diesel::{result::Error, *};
use lemmy_db::ToSafe;
use lemmy_db_schema::{ use lemmy_db_schema::{
schema::{community, community_follower, user_}, schema::{community, community_follower, user_},
source::{ source::{

View File

@ -1,5 +1,6 @@
use crate::{views::ViewToVec, ToSafe}; use crate::ViewToVec;
use diesel::{result::Error, *}; use diesel::{result::Error, *};
use lemmy_db::ToSafe;
use lemmy_db_schema::{ use lemmy_db_schema::{
schema::{community, community_moderator, user_}, schema::{community, community_moderator, user_},
source::{ source::{

View File

@ -1,5 +1,5 @@
use crate::ToSafe;
use diesel::{result::Error, *}; use diesel::{result::Error, *};
use lemmy_db::ToSafe;
use lemmy_db_schema::{ use lemmy_db_schema::{
schema::{community, community_user_ban, user_}, schema::{community, community_user_ban, user_},
source::{ source::{

View File

@ -1,14 +1,18 @@
use crate::{ use crate::{
aggregates::community_aggregates::CommunityAggregates, community::community_moderator_view::CommunityModeratorView,
user_view::UserViewSafe,
ViewToVec,
};
use diesel::{result::Error, *};
use lemmy_db::{
functions::hot_rank, functions::hot_rank,
fuzzy_search, fuzzy_search,
limit_and_offset, limit_and_offset,
views::ViewToVec,
MaybeOptional, MaybeOptional,
SortType, SortType,
ToSafe, ToSafe,
}; };
use diesel::{result::Error, *}; use lemmy_db_aggregates::community_aggregates::CommunityAggregates;
use lemmy_db_schema::{ use lemmy_db_schema::{
schema::{category, community, community_aggregates, community_follower, user_}, schema::{category, community, community_aggregates, community_follower, user_},
source::{ source::{
@ -74,6 +78,24 @@ impl CommunityView {
counts, counts,
}) })
} }
// TODO: this function is only used by is_mod_or_admin() below, can probably be merged
fn community_mods_and_admins(conn: &PgConnection, community_id: i32) -> Result<Vec<i32>, Error> {
let mut mods_and_admins: Vec<i32> = Vec::new();
mods_and_admins.append(
&mut CommunityModeratorView::for_community(conn, community_id)
.map(|v| v.into_iter().map(|m| m.moderator.id).collect())?,
);
mods_and_admins
.append(&mut UserViewSafe::admins(conn).map(|v| v.into_iter().map(|a| a.user.id).collect())?);
Ok(mods_and_admins)
}
pub fn is_mod_or_admin(conn: &PgConnection, user_id: i32, community_id: i32) -> bool {
Self::community_mods_and_admins(conn, community_id)
.unwrap_or_default()
.contains(&user_id)
}
} }
pub struct CommunityQueryBuilder<'a> { pub struct CommunityQueryBuilder<'a> {

View File

@ -1,5 +1,6 @@
use crate::{limit_and_offset, views::ViewToVec, ToSafe}; use crate::ViewToVec;
use diesel::{result::Error, *}; use diesel::{result::Error, *};
use lemmy_db::{limit_and_offset, ToSafe};
use lemmy_db_schema::{ use lemmy_db_schema::{
schema::{community, mod_add_community, user_, user_alias_1}, schema::{community, mod_add_community, user_, user_alias_1},
source::{ source::{

View File

@ -1,5 +1,6 @@
use crate::{limit_and_offset, views::ViewToVec, ToSafe}; use crate::ViewToVec;
use diesel::{result::Error, *}; use diesel::{result::Error, *};
use lemmy_db::{limit_and_offset, ToSafe};
use lemmy_db_schema::{ use lemmy_db_schema::{
schema::{mod_add, user_, user_alias_1}, schema::{mod_add, user_, user_alias_1},
source::{ source::{

View File

@ -1,5 +1,6 @@
use crate::{limit_and_offset, views::ViewToVec, ToSafe}; use crate::ViewToVec;
use diesel::{result::Error, *}; use diesel::{result::Error, *};
use lemmy_db::{limit_and_offset, ToSafe};
use lemmy_db_schema::{ use lemmy_db_schema::{
schema::{community, mod_ban_from_community, user_, user_alias_1}, schema::{community, mod_ban_from_community, user_, user_alias_1},
source::{ source::{

View File

@ -1,5 +1,6 @@
use crate::{limit_and_offset, views::ViewToVec, ToSafe}; use crate::ViewToVec;
use diesel::{result::Error, *}; use diesel::{result::Error, *};
use lemmy_db::{limit_and_offset, ToSafe};
use lemmy_db_schema::{ use lemmy_db_schema::{
schema::{mod_ban, user_, user_alias_1}, schema::{mod_ban, user_, user_alias_1},
source::{ source::{

View File

@ -1,5 +1,6 @@
use crate::{limit_and_offset, views::ViewToVec, ToSafe}; use crate::ViewToVec;
use diesel::{result::Error, *}; use diesel::{result::Error, *};
use lemmy_db::{limit_and_offset, ToSafe};
use lemmy_db_schema::{ use lemmy_db_schema::{
schema::{community, mod_lock_post, post, user_}, schema::{community, mod_lock_post, post, user_},
source::{ source::{

View File

@ -1,5 +1,6 @@
use crate::{limit_and_offset, views::ViewToVec, ToSafe}; use crate::ViewToVec;
use diesel::{result::Error, *}; use diesel::{result::Error, *};
use lemmy_db::{limit_and_offset, ToSafe};
use lemmy_db_schema::{ use lemmy_db_schema::{
schema::{comment, community, mod_remove_comment, post, user_, user_alias_1}, schema::{comment, community, mod_remove_comment, post, user_, user_alias_1},
source::{ source::{

View File

@ -1,5 +1,6 @@
use crate::{limit_and_offset, views::ViewToVec, ToSafe}; use crate::ViewToVec;
use diesel::{result::Error, *}; use diesel::{result::Error, *};
use lemmy_db::{limit_and_offset, ToSafe};
use lemmy_db_schema::{ use lemmy_db_schema::{
schema::{community, mod_remove_community, user_}, schema::{community, mod_remove_community, user_},
source::{ source::{

View File

@ -1,5 +1,6 @@
use crate::{limit_and_offset, views::ViewToVec, ToSafe}; use crate::ViewToVec;
use diesel::{result::Error, *}; use diesel::{result::Error, *};
use lemmy_db::{limit_and_offset, ToSafe};
use lemmy_db_schema::{ use lemmy_db_schema::{
schema::{community, mod_remove_post, post, user_}, schema::{community, mod_remove_post, post, user_},
source::{ source::{

View File

@ -1,5 +1,6 @@
use crate::{limit_and_offset, views::ViewToVec, ToSafe}; use crate::ViewToVec;
use diesel::{result::Error, *}; use diesel::{result::Error, *};
use lemmy_db::{limit_and_offset, ToSafe};
use lemmy_db_schema::{ use lemmy_db_schema::{
schema::{community, mod_sticky_post, post, user_}, schema::{community, mod_sticky_post, post, user_},
source::{ source::{

View File

@ -1,5 +1,6 @@
use crate::{limit_and_offset, views::ViewToVec, MaybeOptional, ToSafe}; use crate::ViewToVec;
use diesel::{result::Error, *}; use diesel::{result::Error, *};
use lemmy_db::{limit_and_offset, MaybeOptional, ToSafe};
use lemmy_db_schema::{ use lemmy_db_schema::{
schema::{community, post, post_report, user_, user_alias_1, user_alias_2}, schema::{community, post, post_report, user_, user_alias_1, user_alias_2},
source::{ source::{

View File

@ -1,15 +1,15 @@
use crate::{ use crate::ViewToVec;
aggregates::post_aggregates::PostAggregates, use diesel::{result::Error, *};
use lemmy_db::{
functions::hot_rank, functions::hot_rank,
fuzzy_search, fuzzy_search,
limit_and_offset, limit_and_offset,
views::ViewToVec,
ListingType, ListingType,
MaybeOptional, MaybeOptional,
SortType, SortType,
ToSafe, ToSafe,
}; };
use diesel::{result::Error, *}; use lemmy_db_aggregates::post_aggregates::PostAggregates;
use lemmy_db_schema::{ use lemmy_db_schema::{
schema::{ schema::{
community, community,
@ -406,14 +406,9 @@ impl ViewToVec for PostView {
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use crate::{ use crate::post_view::{PostQueryBuilder, PostView};
aggregates::post_aggregates::PostAggregates, use lemmy_db::{establish_unpooled_connection, Crud, Likeable, ListingType, SortType};
tests::establish_unpooled_connection, use lemmy_db_aggregates::post_aggregates::PostAggregates;
views::post_view::{PostQueryBuilder, PostView},
Crud,
Likeable,
*,
};
use lemmy_db_schema::source::{community::*, post::*, user::*}; use lemmy_db_schema::source::{community::*, post::*, user::*};
#[test] #[test]

View File

@ -1,5 +1,6 @@
use crate::{limit_and_offset, views::ViewToVec, MaybeOptional, ToSafe}; use crate::ViewToVec;
use diesel::{result::Error, *}; use diesel::{result::Error, *};
use lemmy_db::{limit_and_offset, MaybeOptional, ToSafe};
use lemmy_db_schema::{ use lemmy_db_schema::{
schema::{private_message, user_, user_alias_1}, schema::{private_message, user_, user_alias_1},
source::{ source::{

View File

@ -1,5 +1,6 @@
use crate::{aggregates::site_aggregates::SiteAggregates, ToSafe};
use diesel::{result::Error, *}; use diesel::{result::Error, *};
use lemmy_db::ToSafe;
use lemmy_db_aggregates::site_aggregates::SiteAggregates;
use lemmy_db_schema::{ use lemmy_db_schema::{
schema::{site, site_aggregates, user_}, schema::{site, site_aggregates, user_},
source::{ source::{

View File

@ -1,13 +1,7 @@
use crate::{ use crate::ViewToVec;
aggregates::comment_aggregates::CommentAggregates,
functions::hot_rank,
limit_and_offset,
views::ViewToVec,
MaybeOptional,
SortType,
ToSafe,
};
use diesel::{result::Error, *}; use diesel::{result::Error, *};
use lemmy_db::{functions::hot_rank, limit_and_offset, MaybeOptional, SortType, ToSafe};
use lemmy_db_aggregates::comment_aggregates::CommentAggregates;
use lemmy_db_schema::{ use lemmy_db_schema::{
schema::{ schema::{
comment, comment,

View File

@ -1,13 +1,7 @@
use crate::{ use crate::ViewToVec;
aggregates::user_aggregates::UserAggregates,
fuzzy_search,
limit_and_offset,
views::ViewToVec,
MaybeOptional,
SortType,
ToSafe,
};
use diesel::{dsl::*, result::Error, *}; use diesel::{dsl::*, result::Error, *};
use lemmy_db::{fuzzy_search, limit_and_offset, MaybeOptional, SortType, ToSafe};
use lemmy_db_aggregates::user_aggregates::UserAggregates;
use lemmy_db_schema::{ use lemmy_db_schema::{
schema::{user_, user_aggregates}, schema::{user_, user_aggregates},
source::user::{UserSafe, User_}, source::user::{UserSafe, User_},

View File

@ -9,7 +9,8 @@ name = "lemmy_structs"
path = "src/lib.rs" path = "src/lib.rs"
[dependencies] [dependencies]
lemmy_db = { path = "../lemmy_db" } lemmy_db_queries = { path = "../lemmy_db_queries" }
lemmy_db_views = { path = "../lemmy_db_views" }
lemmy_db_schema = { path = "../lemmy_db_schema" } lemmy_db_schema = { path = "../lemmy_db_schema" }
lemmy_utils = { path = "../lemmy_utils" } lemmy_utils = { path = "../lemmy_utils" }
serde = { version = "1.0.118", features = ["derive"] } serde = { version = "1.0.118", features = ["derive"] }

View File

@ -1,4 +1,4 @@
use lemmy_db::views::{comment_report_view::CommentReportView, comment_view::CommentView}; use lemmy_db_views::{comment_report_view::CommentReportView, comment_view::CommentView};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[derive(Deserialize)] #[derive(Deserialize)]

View File

@ -1,4 +1,4 @@
use lemmy_db::views::{ use lemmy_db_views::{
community::{ community::{
community_follower_view::CommunityFollowerView, community_follower_view::CommunityFollowerView,
community_moderator_view::CommunityModeratorView, community_moderator_view::CommunityModeratorView,

View File

@ -1,4 +1,4 @@
use lemmy_db::views::{ use lemmy_db_views::{
comment_view::CommentView, comment_view::CommentView,
community::community_moderator_view::CommunityModeratorView, community::community_moderator_view::CommunityModeratorView,
post_report_view::PostReportView, post_report_view::PostReportView,

View File

@ -1,4 +1,5 @@
use lemmy_db::views::{ use lemmy_db_schema::source::{category::*, user::User_};
use lemmy_db_views::{
comment_view::CommentView, comment_view::CommentView,
community::community_view::CommunityView, community::community_view::CommunityView,
moderator::{ moderator::{
@ -16,7 +17,6 @@ use lemmy_db::views::{
site_view::SiteView, site_view::SiteView,
user_view::UserViewSafe, user_view::UserViewSafe,
}; };
use lemmy_db_schema::source::{category::*, user::User_};
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
#[derive(Deserialize)] #[derive(Deserialize)]

View File

@ -1,4 +1,4 @@
use lemmy_db::views::{ use lemmy_db_views::{
comment_view::CommentView, comment_view::CommentView,
community::{ community::{
community_follower_view::CommunityFollowerView, community_follower_view::CommunityFollowerView,

View File

@ -89,7 +89,7 @@ impl Settings {
/// added to the config. /// added to the config.
/// ///
/// Note: The env var `LEMMY_DATABASE_URL` is parsed in /// Note: The env var `LEMMY_DATABASE_URL` is parsed in
/// `lemmy_db/src/lib.rs::get_database_url_from_env()` /// `lemmy_db_queries/src/lib.rs::get_database_url_from_env()`
fn init() -> Result<Self, ConfigError> { fn init() -> Result<Self, ConfigError> {
let mut s = Config::new(); let mut s = Config::new();

View File

@ -11,7 +11,7 @@ path = "src/lib.rs"
[dependencies] [dependencies]
lemmy_utils = { path = "../lemmy_utils" } lemmy_utils = { path = "../lemmy_utils" }
lemmy_structs = { path = "../lemmy_structs" } lemmy_structs = { path = "../lemmy_structs" }
lemmy_db = { path = "../lemmy_db" } lemmy_db_queries = { path = "../lemmy_db_queries" }
lemmy_db_schema = { path = "../lemmy_db_schema" } lemmy_db_schema = { path = "../lemmy_db_schema" }
lemmy_rate_limit = { path = "../lemmy_rate_limit" } lemmy_rate_limit = { path = "../lemmy_rate_limit" }
reqwest = { version = "0.10.10", features = ["json"] } reqwest = { version = "0.10.10", features = ["json"] }

View File

@ -5,16 +5,16 @@ use diesel::PgConnection;
use lemmy_api::claims::Claims; use lemmy_api::claims::Claims;
use lemmy_db::{ use lemmy_db::{
source::{community::Community_, user::User}, source::{community::Community_, user::User},
views::{
comment_view::{CommentQueryBuilder, CommentView},
post_view::{PostQueryBuilder, PostView},
site_view::SiteView,
user_mention_view::{UserMentionQueryBuilder, UserMentionView},
},
ListingType, ListingType,
SortType, SortType,
}; };
use lemmy_db_schema::source::{community::Community, user::User_}; use lemmy_db_schema::source::{community::Community, user::User_};
use lemmy_db_views::{
comment_view::{CommentQueryBuilder, CommentView},
post_view::{PostQueryBuilder, PostView},
site_view::SiteView,
user_mention_view::{UserMentionQueryBuilder, UserMentionView},
};
use lemmy_structs::blocking; use lemmy_structs::blocking;
use lemmy_utils::{settings::Settings, utils::markdown_to_html, LemmyError}; use lemmy_utils::{settings::Settings, utils::markdown_to_html, LemmyError};
use lemmy_websocket::LemmyContext; use lemmy_websocket::LemmyContext;

View File

@ -1,7 +1,7 @@
use actix_web::{body::Body, error::ErrorBadRequest, *}; use actix_web::{body::Body, error::ErrorBadRequest, *};
use anyhow::anyhow; use anyhow::anyhow;
use lemmy_api::version; use lemmy_api::version;
use lemmy_db::views::site_view::SiteView; use lemmy_db_views::site_view::SiteView;
use lemmy_structs::blocking; use lemmy_structs::blocking;
use lemmy_utils::{settings::Settings, LemmyError}; use lemmy_utils::{settings::Settings, LemmyError};
use lemmy_websocket::LemmyContext; use lemmy_websocket::LemmyContext;