updated docker compose and formatted backend.
This commit is contained in:
+34
-35
@@ -4,23 +4,26 @@
|
|||||||
#[macro_use]
|
#[macro_use]
|
||||||
extern crate rocket;
|
extern crate rocket;
|
||||||
|
|
||||||
pub mod messenger;
|
|
||||||
pub mod api;
|
pub mod api;
|
||||||
pub mod repo;
|
|
||||||
pub mod error;
|
|
||||||
pub mod svc;
|
|
||||||
pub mod model;
|
|
||||||
pub mod cli;
|
pub mod cli;
|
||||||
|
pub mod error;
|
||||||
|
pub mod messenger;
|
||||||
|
pub mod model;
|
||||||
|
pub mod repo;
|
||||||
|
pub mod svc;
|
||||||
|
|
||||||
use crate::repo::{access_token_repo::AccessTokenRepo, Repo};
|
|
||||||
use crate::repo::message_repo::MessageRepository;
|
|
||||||
use crate::repo::user_repo::UserRepository;
|
|
||||||
use crate::repo::space_repo::SpaceRepository;
|
|
||||||
use crate::repo::channel_repo::ChannelRepository;
|
use crate::repo::channel_repo::ChannelRepository;
|
||||||
|
use crate::repo::message_repo::MessageRepository;
|
||||||
|
use crate::repo::space_repo::SpaceRepository;
|
||||||
|
use crate::repo::user_repo::UserRepository;
|
||||||
|
use crate::repo::{Repo, access_token_repo::AccessTokenRepo};
|
||||||
|
use crate::svc::access_token_svc::AccessTokenService;
|
||||||
use crate::svc::auth_svc::AuthService;
|
use crate::svc::auth_svc::AuthService;
|
||||||
use crate::svc::chat_svc::ChatService;
|
use crate::svc::chat_svc::ChatService;
|
||||||
|
use crate::svc::llm_service::LlmService;
|
||||||
use crate::svc::settings_svc::SettingsService;
|
use crate::svc::settings_svc::SettingsService;
|
||||||
use crate::svc::user_svc::UserService;
|
use crate::svc::user_svc::UserService;
|
||||||
|
use api::cdn;
|
||||||
use rocket::fs::{FileServer, NamedFile};
|
use rocket::fs::{FileServer, NamedFile};
|
||||||
use rocket::http::Method;
|
use rocket::http::Method;
|
||||||
use rocket_cors::{AllowedOrigins, CorsOptions};
|
use rocket_cors::{AllowedOrigins, CorsOptions};
|
||||||
@@ -29,9 +32,6 @@ use sqlx::postgres::PgPoolOptions;
|
|||||||
use std::env;
|
use std::env;
|
||||||
use std::sync::{Arc, LazyLock};
|
use std::sync::{Arc, LazyLock};
|
||||||
use std::time::Duration;
|
use std::time::Duration;
|
||||||
use api::cdn;
|
|
||||||
use crate::svc::access_token_svc::AccessTokenService;
|
|
||||||
use crate::svc::llm_service::LlmService;
|
|
||||||
|
|
||||||
pub fn rocket() -> rocket::Rocket<rocket::Build> {
|
pub fn rocket() -> rocket::Rocket<rocket::Build> {
|
||||||
if std::env::var("RELEASE_MODE").unwrap_or_default() != "1" {
|
if std::env::var("RELEASE_MODE").unwrap_or_default() != "1" {
|
||||||
@@ -39,6 +39,7 @@ pub fn rocket() -> rocket::Rocket<rocket::Build> {
|
|||||||
}
|
}
|
||||||
let db_url = std::env::var("DATABASE_URL").expect("DATABASE_URL must be set");
|
let db_url = std::env::var("DATABASE_URL").expect("DATABASE_URL must be set");
|
||||||
|
|
||||||
|
println!("Running with database URL: {}", db_url);
|
||||||
|
|
||||||
let pool = PgPoolOptions::new()
|
let pool = PgPoolOptions::new()
|
||||||
.max_connections(25)
|
.max_connections(25)
|
||||||
@@ -53,9 +54,22 @@ pub fn rocket() -> rocket::Rocket<rocket::Build> {
|
|||||||
let space_repo: Arc<dyn repo::SpaceRepo> = Arc::new(SpaceRepository::new(pool.clone()));
|
let space_repo: Arc<dyn repo::SpaceRepo> = Arc::new(SpaceRepository::new(pool.clone()));
|
||||||
let channel_repo: Arc<dyn repo::ChannelRepo> = Arc::new(ChannelRepository::new(pool.clone()));
|
let channel_repo: Arc<dyn repo::ChannelRepo> = Arc::new(ChannelRepository::new(pool.clone()));
|
||||||
let llm_service = LlmService::new();
|
let llm_service = LlmService::new();
|
||||||
let chat_service = ChatService::new(32, llm_service.clone(), message_repo.clone(), user_repo.clone(), channel_repo.clone(), space_repo.clone());
|
let chat_service = ChatService::new(
|
||||||
|
32,
|
||||||
|
llm_service.clone(),
|
||||||
|
message_repo.clone(),
|
||||||
|
user_repo.clone(),
|
||||||
|
channel_repo.clone(),
|
||||||
|
space_repo.clone(),
|
||||||
|
);
|
||||||
|
|
||||||
rocket_builder(user_repo, token_repo, space_repo, channel_repo, chat_service)
|
rocket_builder(
|
||||||
|
user_repo,
|
||||||
|
token_repo,
|
||||||
|
space_repo,
|
||||||
|
channel_repo,
|
||||||
|
chat_service,
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn rocket_builder(
|
pub fn rocket_builder(
|
||||||
@@ -63,10 +77,8 @@ pub fn rocket_builder(
|
|||||||
token_repo: Arc<dyn repo::AccessTokenRepoTrait>,
|
token_repo: Arc<dyn repo::AccessTokenRepoTrait>,
|
||||||
space_repo: Arc<dyn repo::SpaceRepo>,
|
space_repo: Arc<dyn repo::SpaceRepo>,
|
||||||
channel_repo: Arc<dyn repo::ChannelRepo>,
|
channel_repo: Arc<dyn repo::ChannelRepo>,
|
||||||
chat_service: ChatService
|
chat_service: ChatService,
|
||||||
) -> rocket::Rocket<rocket::Build> {
|
) -> rocket::Rocket<rocket::Build> {
|
||||||
|
|
||||||
|
|
||||||
let cors = CorsOptions::default()
|
let cors = CorsOptions::default()
|
||||||
.allowed_origins(AllowedOrigins::all())
|
.allowed_origins(AllowedOrigins::all())
|
||||||
.allowed_methods(
|
.allowed_methods(
|
||||||
@@ -93,40 +105,29 @@ pub fn rocket_builder(
|
|||||||
.attach(Template::fairing())
|
.attach(Template::fairing())
|
||||||
.mount("/static", FileServer::from("static"))
|
.mount("/static", FileServer::from("static"))
|
||||||
.mount("/cdn", cdn::routes())
|
.mount("/cdn", cdn::routes())
|
||||||
.mount(
|
.mount("/", routes![favicon,])
|
||||||
"/",
|
|
||||||
routes![
|
|
||||||
favicon,
|
|
||||||
|
|
||||||
],
|
|
||||||
)
|
|
||||||
.mount(
|
.mount(
|
||||||
"/api",
|
"/api",
|
||||||
routes![
|
routes![
|
||||||
cdn::upload_profile_pic,
|
cdn::upload_profile_pic,
|
||||||
api::profile::display_name,
|
api::profile::display_name,
|
||||||
|
|
||||||
// basic auth
|
// basic auth
|
||||||
api::auth::login,
|
api::auth::login,
|
||||||
api::auth::signup,
|
api::auth::signup,
|
||||||
|
|
||||||
// 2fa
|
// 2fa
|
||||||
api::totp::confirm_totp,
|
api::totp::confirm_totp,
|
||||||
api::totp::disable_totp,
|
api::totp::disable_totp,
|
||||||
api::totp::get_totp,
|
api::totp::get_totp,
|
||||||
api::totp::get_totp_status,
|
api::totp::get_totp_status,
|
||||||
api::totp::verify_totp,
|
api::totp::verify_totp,
|
||||||
|
|
||||||
// chat
|
// chat
|
||||||
api::chat::event_stream,
|
api::chat::event_stream,
|
||||||
api::chat::post_message,
|
api::chat::post_message,
|
||||||
|
|
||||||
// user settings
|
// user settings
|
||||||
api::settings::change_display_name,
|
api::settings::change_display_name,
|
||||||
api::settings::change_password,
|
api::settings::change_password,
|
||||||
api::settings::change_username,
|
api::settings::change_username,
|
||||||
api::settings::delete_account,
|
api::settings::delete_account,
|
||||||
|
|
||||||
// spaces
|
// spaces
|
||||||
api::space::list_spaces,
|
api::space::list_spaces,
|
||||||
api::space::list_channels,
|
api::space::list_channels,
|
||||||
@@ -135,15 +136,13 @@ pub fn rocket_builder(
|
|||||||
)
|
)
|
||||||
.register(
|
.register(
|
||||||
"/",
|
"/",
|
||||||
catchers![
|
catchers![error::handle_401, error::handle_404, error::handle_default,],
|
||||||
error::handle_401,
|
|
||||||
error::handle_404,
|
|
||||||
error::handle_default,
|
|
||||||
],
|
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
#[get("/favicon.ico")]
|
#[get("/favicon.ico")]
|
||||||
pub async fn favicon() -> NamedFile {
|
pub async fn favicon() -> NamedFile {
|
||||||
NamedFile::open("static/favicon.ico").await.unwrap()
|
NamedFile::open("static/favicon.ico")
|
||||||
|
.await
|
||||||
|
.expect("favicon not found")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
- ROCKET_SECRET_KEY=${ROCKET_SECRET_KEY}
|
- ROCKET_SECRET_KEY=${ROCKET_SECRET_KEY}
|
||||||
- DATABASE_URL=${DATABASE_URL}
|
- DATABASE_URL=${DATABASE_URL}
|
||||||
|
- JWT_SECRET=${JWT_SECRET}
|
||||||
|
- RELEASE_MODE=1
|
||||||
redis:
|
redis:
|
||||||
container_name: chatapp_redis
|
container_name: chatapp_redis
|
||||||
image: docker.io/library/redis:alpine
|
image: docker.io/library/redis:alpine
|
||||||
|
|||||||
Reference in New Issue
Block a user