2025-12-01 00:20:42 +07:00
|
|
|
#![allow(clippy::all)]
|
|
|
|
|
|
2026-04-02 22:29:08 +07:00
|
|
|
use imphnen_entities::seaorm::auth::mentors::ActiveModel as MentorsActiveModel;
|
|
|
|
|
use imphnen_entities::seaorm::auth::roles::{
|
|
|
|
|
Column as RoleColumn, Entity as RoleEntity,
|
|
|
|
|
};
|
|
|
|
|
use imphnen_entities::seaorm::auth::users::ActiveModel as UsersActiveModel;
|
2025-12-01 00:20:42 +07:00
|
|
|
use imphnen_libs::hash_password;
|
2026-04-02 22:29:08 +07:00
|
|
|
use imphnen_libs::postgres::{PostgresConfig, PostgresConnection};
|
|
|
|
|
use sea_orm::{
|
|
|
|
|
ActiveModelTrait, ActiveValue::Set, ColumnTrait, ConnectionTrait, EntityTrait,
|
|
|
|
|
QueryFilter,
|
|
|
|
|
};
|
2025-07-21 21:29:04 +07:00
|
|
|
use serde_json::json;
|
|
|
|
|
use std::error::Error;
|
2025-12-01 00:20:42 +07:00
|
|
|
use uuid::Uuid;
|
2025-07-21 21:29:04 +07:00
|
|
|
|
|
|
|
|
#[tokio::main]
|
|
|
|
|
async fn main() -> Result<(), Box<dyn Error>> {
|
2025-12-01 00:20:42 +07:00
|
|
|
let config = PostgresConfig::from_env()?;
|
|
|
|
|
let pg_conn = PostgresConnection::new(config).await?;
|
|
|
|
|
let db = &pg_conn.conn;
|
2025-07-21 21:29:04 +07:00
|
|
|
|
2026-04-02 22:29:08 +07:00
|
|
|
let _ = pg_conn
|
|
|
|
|
.execute(sea_orm::Statement::from_string(
|
|
|
|
|
db.get_database_backend(),
|
|
|
|
|
"DELETE FROM app_mentors WHERE id = 'e6f78d23-83bf-5c2b-bcd4-001345678901'"
|
|
|
|
|
.to_string(),
|
|
|
|
|
))
|
|
|
|
|
.await
|
|
|
|
|
.ok();
|
|
|
|
|
let _ = pg_conn
|
|
|
|
|
.execute(sea_orm::Statement::from_string(
|
|
|
|
|
db.get_database_backend(),
|
|
|
|
|
"DELETE FROM app_users WHERE email = 'mentor@example.com'".to_string(),
|
|
|
|
|
))
|
|
|
|
|
.await
|
|
|
|
|
.ok();
|
2025-07-21 21:29:04 +07:00
|
|
|
|
2025-12-01 00:20:42 +07:00
|
|
|
let role = RoleEntity::find()
|
|
|
|
|
.filter(RoleColumn::Name.eq("Mentor"))
|
|
|
|
|
.one(db)
|
|
|
|
|
.await?
|
|
|
|
|
.ok_or("Role 'Mentor' not found")?;
|
2025-07-21 21:29:04 +07:00
|
|
|
|
2025-12-01 00:20:42 +07:00
|
|
|
let user_id = Uuid::new_v4();
|
|
|
|
|
let mut user_model: UsersActiveModel = Default::default();
|
|
|
|
|
user_model.id = Set(user_id);
|
|
|
|
|
user_model.email = Set("mentor@example.com".to_string());
|
|
|
|
|
user_model.password_hash = Set(hash_password("password").unwrap());
|
|
|
|
|
user_model.username = Set("mentor@example.com".to_string());
|
|
|
|
|
user_model.first_name = Set(Some("Mentor".to_string()));
|
|
|
|
|
user_model.last_name = Set(Some("User".to_string()));
|
|
|
|
|
user_model.avatar_url = Set(Some("https://example.com/avatar.jpg".to_string()));
|
|
|
|
|
user_model.is_active = Set(true);
|
|
|
|
|
user_model.is_verified = Set(true);
|
|
|
|
|
user_model.role_id = Set(Some(role.id));
|
|
|
|
|
user_model.created_at = Set(chrono::Utc::now());
|
|
|
|
|
user_model.updated_at = Set(chrono::Utc::now());
|
|
|
|
|
user_model.insert(db).await?;
|
2025-07-21 21:29:04 +07:00
|
|
|
|
2025-12-01 00:20:42 +07:00
|
|
|
let mentor_id = Uuid::new_v4();
|
|
|
|
|
let mut mentor_model: MentorsActiveModel = Default::default();
|
|
|
|
|
mentor_model.id = Set(mentor_id);
|
|
|
|
|
mentor_model.user_id = Set(user_id);
|
2026-04-02 22:29:08 +07:00
|
|
|
mentor_model.industries = Set(Some(json!(["Software", "Education"])));
|
|
|
|
|
mentor_model.expertise = Set(Some(json!(["Rust", "Microservices"])));
|
|
|
|
|
mentor_model.languages = Set(Some(json!(["Indonesian", "English"])));
|
2025-12-01 00:20:42 +07:00
|
|
|
mentor_model.current_company = Set(Some("PT Contoh".to_string()));
|
|
|
|
|
mentor_model.current_role = Set(Some("Senior Backend Engineer".to_string()));
|
|
|
|
|
mentor_model.years_of_experience = Set(Some(5));
|
2026-04-02 22:29:08 +07:00
|
|
|
mentor_model.topics_of_interest =
|
|
|
|
|
Set(Some(json!(["Rust Programming", "Backend Development"])));
|
2025-12-01 00:20:42 +07:00
|
|
|
mentor_model.preferred_mentee_level = Set(Some("beginner".to_string()));
|
2026-04-02 22:29:08 +07:00
|
|
|
mentor_model.preferred_mentoring_formats = Set(Some(json!(["online", "offline"])));
|
|
|
|
|
mentor_model.availability_commitment = Set(Some(
|
|
|
|
|
"2 jam per minggu untuk mentoring online dan offline".to_string(),
|
|
|
|
|
));
|
2025-12-01 00:20:42 +07:00
|
|
|
mentor_model.mentoring_rate = Set(Some(100000.0));
|
|
|
|
|
mentor_model.status = Set(Some("verified".to_string()));
|
|
|
|
|
mentor_model.is_deleted = Set(false);
|
|
|
|
|
mentor_model.created_at = Set(chrono::Utc::now());
|
|
|
|
|
mentor_model.updated_at = Set(chrono::Utc::now());
|
|
|
|
|
mentor_model.insert(db).await?;
|
2025-07-21 21:29:04 +07:00
|
|
|
println!("Mentor created successfully!");
|
|
|
|
|
|
|
|
|
|
println!("✅ Inserted mentor user: mentor@example.com");
|
|
|
|
|
println!("✅ Mentor user seeded");
|
|
|
|
|
Ok(())
|
|
|
|
|
}
|