mirror of
https://github.com/infiniflow/ragflow.git
synced 2026-06-29 23:41:12 +08:00
61 lines
1.7 KiB
Rust
61 lines
1.7 KiB
Rust
mod api;
|
|
mod entity;
|
|
mod service;
|
|
|
|
use std::env;
|
|
use actix_files::Files;
|
|
use actix_web::{web, App, HttpServer, middleware};
|
|
use listenfd::ListenFd;
|
|
use sea_orm::{Database, DatabaseConnection};
|
|
use migration::{Migrator, MigratorTrait};
|
|
|
|
#[derive(Debug, Clone)]
|
|
struct AppState {
|
|
conn: DatabaseConnection,
|
|
}
|
|
|
|
#[actix_web::main]
|
|
async fn main() -> std::io::Result<()> {
|
|
std::env::set_var("RUST_LOG", "debug");
|
|
tracing_subscriber::fmt::init();
|
|
|
|
// get env vars
|
|
dotenvy::dotenv().ok();
|
|
let db_url = env::var("DATABASE_URL").expect("DATABASE_URL is not set in .env file");
|
|
let host = env::var("HOST").expect("HOST is not set in .env file");
|
|
let port = env::var("PORT").expect("PORT is not set in .env file");
|
|
let server_url = format!("{host}:{port}");
|
|
|
|
// establish connection to database and apply migrations
|
|
// -> create post table if not exists
|
|
let conn = Database::connect(&db_url).await.unwrap();
|
|
Migrator::up(&conn, None).await.unwrap();
|
|
|
|
let state = AppState { conn };
|
|
|
|
// create server and try to serve over socket if possible
|
|
let mut listenfd = ListenFd::from_env();
|
|
let mut server = HttpServer::new(move || {
|
|
App::new()
|
|
.service(Files::new("/static", "./static"))
|
|
.app_data(web::Data::new(state.clone()))
|
|
.wrap(middleware::Logger::default())
|
|
.configure(init)
|
|
});
|
|
|
|
server = match listenfd.take_tcp_listener(0)? {
|
|
Some(listener) => server.listen(listener)?,
|
|
None => server.bind(&server_url)?,
|
|
};
|
|
|
|
println!("Starting server at {server_url}");
|
|
server.run().await?;
|
|
|
|
Ok(())
|
|
}
|
|
|
|
fn init(cfg: &mut web::ServiceConfig) {
|
|
cfg.service(api::tag::create);
|
|
cfg.service(api::tag::delete);
|
|
cfg.service(api::tag::list);
|
|
} |