MCPcopy Create free account
hub / github.com/SeaQL/sea-orm / start

Function start

examples/actix_example/api/src/lib.rs:168–208  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

166
167#[actix_web::main]
168async fn start() -> std::io::Result<()> {
169 std::env::set_var("RUST_LOG", "debug");
170 tracing_subscriber::fmt::init();
171
172 // get env vars
173 dotenvy::dotenv().ok();
174 let db_url = env::var("DATABASE_URL").expect("DATABASE_URL is not set in .env file");
175 let host = env::var("HOST").expect("HOST is not set in .env file");
176 let port = env::var("PORT").expect("PORT is not set in .env file");
177 let server_url = format!("{host}:{port}");
178
179 // establish connection to database and apply migrations
180 // -> create post table if not exists
181 let conn = Database::connect(&db_url).await.unwrap();
182 Migrator::up(&conn, None).await.unwrap();
183
184 // load tera templates and build app state
185 let templates = Tera::new(concat!(env!("CARGO_MANIFEST_DIR"), "/templates/**/*")).unwrap();
186 let state = AppState { templates, conn };
187
188 // create server and try to serve over socket if possible
189 let mut listenfd = ListenFd::from_env();
190 let mut server = HttpServer::new(move || {
191 App::new()
192 .service(Fs::new("/static", "./api/static"))
193 .app_data(web::Data::new(state.clone()))
194 .wrap(middleware::Logger::default()) // enable logger
195 .default_service(web::route().to(not_found))
196 .configure(init)
197 });
198
199 server = match listenfd.take_tcp_listener(0)? {
200 Some(listener) => server.listen(listener)?,
201 None => server.bind(&server_url)?,
202 };
203
204 println!("Starting server at {server_url}");
205 server.run().await?;
206
207 Ok(())
208}
209
210fn init(cfg: &mut web::ServiceConfig) {
211 cfg.service(list);

Callers 1

mainFunction · 0.70

Calls 6

initFunction · 0.85
unwrapMethod · 0.80
wrapMethod · 0.80
newFunction · 0.70
toMethod · 0.45
runMethod · 0.45

Tested by

no test coverage detected