25개 이상의 토픽을 선택하실 수 없습니다. Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

main.rs 1.9 KiB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. extern crate core;
  2. mod routes;
  3. mod schema;
  4. mod db;
  5. mod ipfs;
  6. mod types;
  7. mod repositories;
  8. mod utils;
  9. use crate::routes::proposal::{add_proposal, get_proposal, list_proposals, visit_proposal};
  10. use actix_web::{web, App, HttpServer};
  11. use crate::routes::amendment::{add_amendment, get_amendment, list_amendments};
  12. use crate::routes::auth::{register, login, login_freighter, get_nonce};
  13. use crate::routes::openapi::get_openapi;
  14. use crate::utils::env::load_env;
  15. #[actix_web::main]
  16. async fn main() -> std::io::Result<()> {
  17. // Load environment variables from .env file (if present)
  18. load_env();
  19. let ip = "127.0.0.1";
  20. let port = 7300;
  21. println!("Starting server on http://{}:{}", ip, port);
  22. HttpServer::new(|| {
  23. App::new()
  24. .service(get_openapi)
  25. .service(
  26. web::scope("/api/v1")
  27. .service(
  28. web::scope("/proposals")
  29. .service(list_proposals)
  30. )
  31. .service(
  32. web::scope("/proposal")
  33. .service(add_proposal)
  34. .service(get_proposal)
  35. .service(visit_proposal)
  36. )
  37. .service(
  38. web::scope("/amendment")
  39. .service(add_amendment)
  40. .service(get_amendment)
  41. )
  42. .service(
  43. web::scope("/amendments")
  44. .service(list_amendments)
  45. )
  46. .service(
  47. web::scope("/auth")
  48. .service(register)
  49. .service(login)
  50. .service(login_freighter)
  51. .service(get_nonce)
  52. )
  53. )
  54. })
  55. .bind((ip, port))?
  56. .run()
  57. .await
  58. }