282 lines
9.4 KiB
Rust
282 lines
9.4 KiB
Rust
pub mod activity;
|
|
pub mod audit;
|
|
pub mod billing;
|
|
pub mod board;
|
|
pub mod info;
|
|
pub mod init;
|
|
pub mod invitation;
|
|
pub mod join_answers;
|
|
pub mod join_request;
|
|
pub mod join_settings;
|
|
pub mod labels;
|
|
pub mod like;
|
|
pub mod members;
|
|
pub mod repo;
|
|
pub mod settings;
|
|
pub mod transfer_repo;
|
|
pub mod watch;
|
|
|
|
use actix_web::web;
|
|
|
|
#[derive(serde::Deserialize, utoipa::IntoParams)]
|
|
pub struct PageQuery {
|
|
pub page: Option<u64>,
|
|
pub per_page: Option<u64>,
|
|
}
|
|
|
|
#[derive(serde::Deserialize, utoipa::IntoParams)]
|
|
pub struct RepoPagerQuery {
|
|
pub limit: Option<u64>,
|
|
pub cursor: Option<String>,
|
|
}
|
|
|
|
#[derive(serde::Deserialize, utoipa::IntoParams)]
|
|
pub struct UserPagerQuery {
|
|
pub page: Option<i64>,
|
|
pub par_page: Option<i64>,
|
|
}
|
|
|
|
impl From<UserPagerQuery> for service::Pager {
|
|
fn from(q: UserPagerQuery) -> Self {
|
|
service::Pager {
|
|
page: q.page.unwrap_or(1),
|
|
par_page: q.par_page.unwrap_or(20),
|
|
}
|
|
}
|
|
}
|
|
|
|
#[derive(serde::Deserialize, utoipa::IntoParams)]
|
|
pub struct JoinRequestQuery {
|
|
pub status: Option<String>,
|
|
pub page: Option<u64>,
|
|
pub per_page: Option<u64>,
|
|
}
|
|
|
|
pub fn init_project_routes(cfg: &mut web::ServiceConfig) {
|
|
cfg.service(
|
|
web::scope("/projects")
|
|
.route("", web::post().to(init::project_create))
|
|
.route(
|
|
"/me/invitations",
|
|
web::get().to(invitation::project_my_invitations),
|
|
)
|
|
.route(
|
|
"/me/join-requests",
|
|
web::get().to(join_request::project_my_join_requests),
|
|
)
|
|
.route("/{project_name}", web::get().to(info::project_info))
|
|
.route("/{project_name}/repos", web::get().to(repo::project_repos))
|
|
.route(
|
|
"/{project_name}/repos",
|
|
web::post().to(repo::project_repo_create),
|
|
)
|
|
.route(
|
|
"/{project_name}/members",
|
|
web::get().to(members::project_members),
|
|
)
|
|
.route(
|
|
"/{project_name}/members/role",
|
|
web::patch().to(members::project_update_member_role),
|
|
)
|
|
.route(
|
|
"/{project_name}/members/{user_id}",
|
|
web::delete().to(members::project_remove_member),
|
|
)
|
|
.route(
|
|
"/{project_name}/labels",
|
|
web::get().to(labels::project_labels),
|
|
)
|
|
.route(
|
|
"/{project_name}/labels",
|
|
web::post().to(labels::project_create_label),
|
|
)
|
|
.route(
|
|
"/{project_name}/labels/{label_id}",
|
|
web::get().to(labels::project_get_label),
|
|
)
|
|
.route(
|
|
"/{project_name}/labels/{label_id}",
|
|
web::patch().to(labels::project_update_label),
|
|
)
|
|
.route(
|
|
"/{project_name}/labels/{label_id}",
|
|
web::delete().to(labels::project_delete_label),
|
|
)
|
|
.route("/{project_name}/like", web::post().to(like::project_like))
|
|
.route(
|
|
"/{project_name}/like",
|
|
web::delete().to(like::project_unlike),
|
|
)
|
|
.route("/{project_name}/like", web::get().to(like::project_is_like))
|
|
.route(
|
|
"/{project_name}/likes/count",
|
|
web::get().to(like::project_likes_count),
|
|
)
|
|
.route(
|
|
"/{project_name}/likes/users",
|
|
web::get().to(like::project_like_users),
|
|
)
|
|
.route(
|
|
"/{project_name}/watch",
|
|
web::post().to(watch::project_watch),
|
|
)
|
|
.route(
|
|
"/{project_name}/watch",
|
|
web::delete().to(watch::project_unwatch),
|
|
)
|
|
.route(
|
|
"/{project_name}/watch",
|
|
web::get().to(watch::project_is_watch),
|
|
)
|
|
.route(
|
|
"/{project_name}/watches/count",
|
|
web::get().to(watch::project_watches_count),
|
|
)
|
|
.route(
|
|
"/{project_name}/watches/users",
|
|
web::get().to(watch::project_watch_users),
|
|
)
|
|
.route(
|
|
"/{project_name}/settings/name",
|
|
web::patch().to(settings::project_exchange_name),
|
|
)
|
|
.route(
|
|
"/{project_name}/settings/visibility",
|
|
web::patch().to(settings::project_exchange_visibility),
|
|
)
|
|
.route(
|
|
"/{project_name}/settings/title",
|
|
web::patch().to(settings::project_exchange_title),
|
|
)
|
|
.route(
|
|
"/{project_name}/audit-logs",
|
|
web::get().to(audit::project_audit_logs),
|
|
)
|
|
.route(
|
|
"/{project_name}/audit-logs/{log_id}",
|
|
web::get().to(audit::project_audit_log),
|
|
)
|
|
.route(
|
|
"/{project_name}/audit-logs",
|
|
web::post().to(audit::project_log_audit),
|
|
)
|
|
.route(
|
|
"/{project_name}/activities",
|
|
web::get().to(activity::project_activities),
|
|
)
|
|
.route(
|
|
"/{project_name}/activities",
|
|
web::post().to(activity::project_log_activity),
|
|
)
|
|
.route(
|
|
"/{project_name}/billing",
|
|
web::get().to(billing::project_billing),
|
|
)
|
|
.route(
|
|
"/{project_name}/billing/history",
|
|
web::get().to(billing::project_billing_history),
|
|
)
|
|
.route(
|
|
"/{project_name}/invitations",
|
|
web::get().to(invitation::project_invitations),
|
|
)
|
|
.route(
|
|
"/{project_name}/invitations",
|
|
web::post().to(invitation::project_invite_user),
|
|
)
|
|
.route(
|
|
"/{project_name}/invitations/accept",
|
|
web::post().to(invitation::project_accept_invitation),
|
|
)
|
|
.route(
|
|
"/{project_name}/invitations/reject",
|
|
web::post().to(invitation::project_reject_invitation),
|
|
)
|
|
.route(
|
|
"/{project_name}/invitations/{user_id}",
|
|
web::delete().to(invitation::project_cancel_invitation),
|
|
)
|
|
.route(
|
|
"/{project_name}/join-settings",
|
|
web::get().to(join_settings::project_join_settings),
|
|
)
|
|
.route(
|
|
"/{project_name}/join-settings",
|
|
web::patch().to(join_settings::project_update_join_settings),
|
|
)
|
|
.route(
|
|
"/{project_name}/join-requests",
|
|
web::get().to(join_request::project_join_requests),
|
|
)
|
|
.route(
|
|
"/{project_name}/join-requests",
|
|
web::post().to(join_request::project_submit_join_request),
|
|
)
|
|
.route(
|
|
"/{project_name}/join-requests/{request_id}",
|
|
web::patch().to(join_request::project_process_join_request),
|
|
)
|
|
.route(
|
|
"/{project_name}/join-requests/{request_id}",
|
|
web::delete().to(join_request::project_cancel_join_request),
|
|
)
|
|
.route(
|
|
"/{project_name}/join-requests/{request_id}/answers",
|
|
web::get().to(join_answers::project_join_answers),
|
|
)
|
|
.route(
|
|
"/{project_name}/join-requests/{request_id}/answers",
|
|
web::post().to(join_answers::project_submit_join_answers),
|
|
)
|
|
.route(
|
|
"/{source_project}/repos/{repo_name}/transfer",
|
|
web::post().to(transfer_repo::project_transfer_repo),
|
|
)
|
|
// Boards
|
|
.route("/{project_name}/boards", web::get().to(board::board_list))
|
|
.route(
|
|
"/{project_name}/boards",
|
|
web::post().to(board::board_create),
|
|
)
|
|
.route(
|
|
"/{project_name}/boards/{board_id}",
|
|
web::get().to(board::board_get),
|
|
)
|
|
.route(
|
|
"/{project_name}/boards/{board_id}",
|
|
web::patch().to(board::board_update),
|
|
)
|
|
.route(
|
|
"/{project_name}/boards/{board_id}",
|
|
web::delete().to(board::board_delete),
|
|
)
|
|
// Columns
|
|
.route(
|
|
"/{project_name}/boards/{board_id}/columns",
|
|
web::post().to(board::column_create),
|
|
)
|
|
.route(
|
|
"/{project_name}/columns/{column_id}",
|
|
web::patch().to(board::column_update),
|
|
)
|
|
.route(
|
|
"/{project_name}/columns/{column_id}",
|
|
web::delete().to(board::column_delete),
|
|
)
|
|
// Cards
|
|
.route("/{project_name}/cards", web::post().to(board::card_create))
|
|
.route(
|
|
"/{project_name}/cards/{card_id}",
|
|
web::patch().to(board::card_update),
|
|
)
|
|
.route(
|
|
"/{project_name}/cards/{card_id}/move",
|
|
web::post().to(board::card_move),
|
|
)
|
|
.route(
|
|
"/{project_name}/cards/{card_id}",
|
|
web::delete().to(board::card_delete),
|
|
),
|
|
);
|
|
}
|