fix: seeder roles permissions

This commit is contained in:
Maulana Sodiqin
2025-03-28 17:18:07 +07:00
parent 9d92a9a136
commit a97044edfc
3 changed files with 62 additions and 35 deletions
+3 -10
View File
@@ -1,6 +1,5 @@
use super::{
UsersActiveInactiveSchema, UsersItemDto, UsersItemDtoRaw, UsersSchema,
UsersSetNewPasswordSchema,
UsersActiveInactiveSchema, UsersItemDtoRaw, UsersSchema, UsersSetNewPasswordSchema,
};
use crate::{
get_id, make_thing, query_list_with_meta, AppState, MetaRequestDto, ResourceEnum,
@@ -20,7 +19,7 @@ impl<'a> UsersRepository<'a> {
pub async fn query_user_list(
&self,
meta: MetaRequestDto,
) -> Result<ResponseListSuccessDto<Vec<UsersItemDto>>> {
) -> Result<ResponseListSuccessDto<Vec<UsersItemDtoRaw>>> {
let db = &self.state.surrealdb_ws;
let mut conditions = vec!["is_deleted = false".to_string()];
@@ -84,14 +83,8 @@ impl<'a> UsersRepository<'a> {
)
.await?;
let converted = raw_result
.data
.into_iter()
.map(UsersItemDto::from)
.collect();
Ok(ResponseListSuccessDto {
data: converted,
data: raw_result.data,
meta: raw_result.meta,
})
}
+59
View File
@@ -0,0 +1,59 @@
use najm_course_api::{get_iso_date, make_thing, Env};
use std::error::Error;
use surrealdb::{engine::remote::ws::Ws, opt::auth::Root, Surreal};
#[tokio::main]
async fn main() -> Result<(), Box<dyn Error>> {
let env = Env::new();
let db = Surreal::new::<Ws>(env.surrealdb_url).await?;
db.signin(Root {
username: &env.surrealdb_username,
password: &env.surrealdb_password,
})
.await?;
db.use_ns(env.surrealdb_namespace)
.use_db(env.surrealdb_dbname)
.await?;
let role_permissions = vec![
(
"50133429-f4b1-4249-9f97-7b86e6ee9d86", // Staf
vec![
"7c15e31d-36e2-49f9-97db-138c03fb0cf6", // Read List Users
"319ee593-ff0a-4f29-bbaf-9feb3174a3a6", // Read Detail Users
],
),
(
"f6b03f25-e416-4893-ac88-caaa690afb07", // Admin
vec![
"023e2dfe-93c3-4008-94a8-b5dff403f73b", // Create Users
"96df0689-2ae9-4894-bf00-837c19415e5c", // Delete Users
"98b3dc4c-0124-461f-afcd-166637c5e6e8", // Update Users
"319ee593-ff0a-4f29-bbaf-9feb3174a3a6", // Read Detail Users
"7c15e31d-36e2-49f9-97db-138c03fb0cf6", // Read List Users
"9164ca6e-c7e3-4238-a15f-f36ab9577e7e", // Read List Roles
"319ee593-ff0a-4f29-bbaf-9feb3174a3a2", // Create Roles
"a00d5608-4c48-4542-845c-dfe004687022", // Update Roles
"35b0d992-65c8-4b62-b030-e6e0320e4048", // Delete Roles
],
),
];
for (role_id, permission_ids) in role_permissions {
let permission_refs: Vec<_> = permission_ids
.into_iter()
.map(|perm_id| make_thing("app_permissions", perm_id))
.collect();
db.query("UPDATE type::thing('app_roles', $role_id) SET permissions = $permissions, updated_at = $updated_at")
.bind(("role_id", role_id))
.bind(("permissions", permission_refs))
.bind(("updated_at", get_iso_date()))
.await?;
println!("✅ Updated permissions for role ID: {}", role_id);
}
println!("✅ Semua roles telah diperbarui dengan permissions di SurrealDB!");
Ok(())
}
-25
View File
@@ -1,25 +0,0 @@
use najm_course_api::{Env, UsersItemDto, UsersItemDtoRaw};
use surrealdb::{engine::remote::ws::Ws, opt::auth::Root, Surreal};
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let env = Env::new();
let db = Surreal::new::<Ws>(env.surrealdb_url).await?;
db.signin(Root {
username: &env.surrealdb_username,
password: &env.surrealdb_password,
})
.await?;
db.use_ns(env.surrealdb_namespace)
.use_db(env.surrealdb_dbname)
.await?;
let raw_users: Vec<UsersItemDtoRaw> = db.select("app_users").await?;
let users: Vec<UsersItemDto> = raw_users.into_iter().map(Into::into).collect();
for user in users {
println!("{:?}", user);
}
Ok(())
}