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