Skip to content

Commit

Permalink
update apis
Browse files Browse the repository at this point in the history
  • Loading branch information
michaelvlach committed Dec 24, 2024
1 parent 69c3140 commit d314cca
Show file tree
Hide file tree
Showing 15 changed files with 128 additions and 47 deletions.
1 change: 1 addition & 0 deletions agdb_api/php/docs/Model/ServerDatabase.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

37 changes: 37 additions & 0 deletions agdb_api/php/lib/Model/ServerDatabase.php

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions agdb_api/rust/src/api_types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ pub struct DbAudit(pub Vec<QueryAudit>);
#[derive(Debug, Default, Deserialize, Serialize, ToSchema, PartialEq, Eq, PartialOrd, Ord)]
pub struct ServerDatabase {
pub name: String,
pub owner: String,
pub db_type: DbType,
pub role: DbUserRole,
pub size: u64,
Expand Down Expand Up @@ -242,6 +243,7 @@ mod tests {
"{:?}",
ServerDatabase {
name: "db".to_string(),
owner: "owner".to_string(),
db_type: DbType::Memory,
role: DbUserRole::Admin,
size: 0,
Expand Down Expand Up @@ -301,13 +303,15 @@ mod tests {
assert!(user < other);
let db = ServerDatabase {
name: "db".to_string(),
owner: "owner".to_string(),
db_type: DbType::Memory,
role: DbUserRole::Admin,
size: 0,
backup: 0,
};
let other = ServerDatabase {
name: "db2".to_string(),
owner: "owner".to_string(),
db_type: DbType::Memory,
role: DbUserRole::Admin,
size: 0,
Expand Down Expand Up @@ -347,6 +351,7 @@ mod tests {

let db = ServerDatabase {
name: "db".to_string(),
owner: "owner".to_string(),
db_type: DbType::Memory,
role: DbUserRole::Admin,
size: 0,
Expand Down
1 change: 1 addition & 0 deletions agdb_api/typescript/src/openapi.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1171,6 +1171,7 @@ declare namespace Components {
backup: number; // int64
db_type: DbType;
name: string;
owner: string;
role: DbUserRole;
size: number; // int64
}
Expand Down
4 changes: 4 additions & 0 deletions agdb_server/openapi.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

34 changes: 22 additions & 12 deletions agdb_server/src/routes/admin/db.rs
Original file line number Diff line number Diff line change
Expand Up @@ -173,16 +173,17 @@ pub(crate) async fn clear(

let (commit_index, _result) = cluster
.exec(DbClear {
owner,
db,
owner: owner.clone(),
db: db.clone(),
resource: request.resource,
})
.await?;

let size = db_pool.db_size(&db_name).await.unwrap_or(0);
let database = server_db.user_db(owner_id, &db_name).await?;
let db = ServerDatabase {
name: db_name,
name: db,
owner,
db_type: database.db_type,
role,
backup: database.backup,
Expand Down Expand Up @@ -442,13 +443,16 @@ pub(crate) async fn list(
let mut dbs = Vec::with_capacity(databases.len());

for db in databases {
dbs.push(ServerDatabase {
size: db_pool.db_size(&db.name).await.unwrap_or(0),
name: db.name,
db_type: db.db_type,
role: DbUserRole::Admin,
backup: db.backup,
});
if let Some((owner, name)) = db.name.split_once('/') {
dbs.push(ServerDatabase {
size: db_pool.db_size(&db.name).await.unwrap_or(0),
name: name.to_string(),
owner: owner.to_string(),
db_type: db.db_type,
role: DbUserRole::Admin,
backup: db.backup,
});
}
}

Ok((StatusCode::OK, Json(dbs)))
Expand Down Expand Up @@ -480,14 +484,20 @@ pub(crate) async fn optimize(
let database = server_db.user_db(owner_id, &db_name).await?;
let role = server_db.user_db_role(owner_id, &db_name).await?;

let (commit_index, _result) = cluster.exec(DbOptimize { owner, db }).await?;
let (commit_index, _result) = cluster
.exec(DbOptimize {
owner: owner.clone(),
db: db.clone(),
})
.await?;
let size = db_pool.db_size(&db_name).await?;

Ok((
StatusCode::OK,
[("commit-index", commit_index.to_string())],
Json(ServerDatabase {
name: db_name,
name: db,
owner,
db_type: database.db_type,
role,
backup: database.backup,
Expand Down
37 changes: 23 additions & 14 deletions agdb_server/src/routes/db.rs
Original file line number Diff line number Diff line change
Expand Up @@ -210,16 +210,17 @@ pub(crate) async fn clear(

let (commit_index, _result) = cluster
.exec(DbClear {
owner,
db,
owner: owner.clone(),
db: db.clone(),
resource: request.resource,
})
.await?;

let size = db_pool.db_size(&db_name).await.unwrap_or(0);
let database = server_db.user_db(user.0, &db_name).await?;
let db = ServerDatabase {
name: db_name,
name: db,
owner,
db_type: database.db_type,
role,
backup: database.backup,
Expand Down Expand Up @@ -510,16 +511,18 @@ pub(crate) async fn list(
.zip(sizes)
.filter_map(|((role, db), size)| {
if size != 0 {
Some(ServerDatabase {
name: db.name,
db_type: db.db_type,
role,
backup: db.backup,
size,
})
} else {
None
if let Some((owner, name)) = db.name.split_once('/') {
return Some(ServerDatabase {
name: name.to_string(),
owner: owner.to_string(),
db_type: db.db_type,
role,
backup: db.backup,
size,
});
}
}
None
})
.collect();

Expand Down Expand Up @@ -557,14 +560,20 @@ pub(crate) async fn optimize(
return Err(permission_denied("write rights required"));
}

let (commit_index, _result) = cluster.exec(DbOptimize { owner, db }).await?;
let (commit_index, _result) = cluster
.exec(DbOptimize {
owner: owner.clone(),
db: db.clone(),
})
.await?;
let size = db_pool.db_size(&db_name).await?;

Ok((
StatusCode::OK,
[("commit-index", commit_index.to_string())],
Json(ServerDatabase {
name: db_name,
name: db.to_string(),
owner,
db_type: database.db_type,
role,
backup: database.backup,
Expand Down
8 changes: 5 additions & 3 deletions agdb_server/tests/routes/admin_db_list_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,16 @@ async fn db_list() -> anyhow::Result<()> {
let (status, list) = server.api.admin_db_list().await?;
assert_eq!(status, 200);
assert!(list.contains(&ServerDatabase {
name: format!("{owner1}/{db1}"),
name: db1.to_string(),
owner: owner1.to_string(),
db_type: DbType::Memory,
role: DbUserRole::Admin,
size: 2656,
backup: 0,
}));
assert!(list.contains(&ServerDatabase {
name: format!("{}/{}", owner2, db2),
name: db2.to_string(),
owner: owner2.to_string(),
db_type: DbType::Memory,
role: DbUserRole::Admin,
size: 2656,
Expand All @@ -50,7 +52,7 @@ async fn with_backup() -> anyhow::Result<()> {
assert_eq!(status, 200);
let db = list
.iter()
.find(|d| d.name == format!("{}/{}", owner, db))
.find(|d| d.name == *db && d.owner == *owner)
.unwrap();
assert_ne!(db.backup, 0);
Ok(())
Expand Down
2 changes: 1 addition & 1 deletion agdb_server/tests/routes/admin_db_optimize_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ async fn optimize() -> anyhow::Result<()> {
.await?
.1
.iter()
.find(|d| d.name == format!("{owner}/{db}"))
.find(|d| d.name == *db && d.owner == *owner)
.unwrap()
.size;
let (status, db) = server.api.admin_db_optimize(owner, db).await?;
Expand Down
6 changes: 4 additions & 2 deletions agdb_server/tests/routes/admin_db_user_add_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,8 @@ async fn db_user_add() -> anyhow::Result<()> {
assert_eq!(
list,
vec![ServerDatabase {
name: format!("{}/{}", owner, db),
name: db.to_string(),
owner: owner.to_string(),
db_type: DbType::Mapped,
role: DbUserRole::Write,
size: 2656,
Expand Down Expand Up @@ -61,7 +62,8 @@ async fn change_user_role() -> anyhow::Result<()> {
assert_eq!(
list,
vec![ServerDatabase {
name: format!("{}/{}", owner, db),
name: db.to_string(),
owner: owner.to_string(),
db_type: DbType::Mapped,
role: DbUserRole::Read,
size: 2656,
Expand Down
Loading

0 comments on commit d314cca

Please sign in to comment.