diff --git a/migrations/20251011162144_add_github_user.sql b/migrations/20251011162144_add_github_user.sql new file mode 100644 index 0000000..3960009 --- /dev/null +++ b/migrations/20251011162144_add_github_user.sql @@ -0,0 +1,3 @@ +-- Add migration script here +ALTER TABLE Member +ADD COLUMN github_user varchar(255); \ No newline at end of file diff --git a/src/database_seeder/seed.sql b/src/database_seeder/seed.sql index e1799d1..261e96e 100644 --- a/src/database_seeder/seed.sql +++ b/src/database_seeder/seed.sql @@ -1,6 +1,6 @@ -- Member INSERT INTO member ( - roll_no, name, email, sex, year, hostel, mac_address, discord_id, group_id + roll_no, name, email, sex, year, hostel, mac_address, discord_id, group_id, track, github_user ) SELECT 'R' || LPAD(i::TEXT, 4, '0'), @@ -26,7 +26,9 @@ SELECT 'Hostel ' || ((i % 5) + 1), '00:14:22:01:' || LPAD(TO_HEX(i), 2, '0') || ':' || LPAD(TO_HEX(i + 60), 2, '0'), 'discord_user_' || i, - (i % 8) + 1 + (i % 8) + 1, + 'track ' || ((i%4)+1), + 'github_user_' || i FROM generate_series(1, 60) AS i ON CONFLICT (roll_no) DO NOTHING; diff --git a/src/graphql/mutations/member_mutations.rs b/src/graphql/mutations/member_mutations.rs index b21a80a..c6c6ebf 100644 --- a/src/graphql/mutations/member_mutations.rs +++ b/src/graphql/mutations/member_mutations.rs @@ -16,8 +16,8 @@ impl MemberMutations { let now = Local::now().with_timezone(&Kolkata).date_naive(); let member = sqlx::query_as::<_, Member>( - "INSERT INTO Member (roll_no, name, email, sex, year, hostel, mac_address, discord_id, group_id, track, created_at) - VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11) RETURNING *" + "INSERT INTO Member (roll_no, name, email, sex, year, hostel, mac_address, discord_id, group_id, track, github_user, created_at) + VALUES ($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) RETURNING *" ) .bind(&input.roll_no) .bind(&input.name) @@ -29,6 +29,7 @@ impl MemberMutations { .bind(&input.discord_id) .bind(input.group_id) .bind(&input.track) + .bind(&input.github_user) .bind(now) .fetch_one(pool.as_ref()) .await?; @@ -51,8 +52,9 @@ impl MemberMutations { mac_address = COALESCE($7, mac_address), discord_id = COALESCE($8, discord_id), group_id = COALESCE($9, group_id), - track = COALESCE($10, track) - WHERE member_id = $11 + track = COALESCE($10, track), + github_user = COALESCE($11, github_user) + WHERE member_id = $12 RETURNING *", ) .bind(&input.roll_no) @@ -65,6 +67,7 @@ impl MemberMutations { .bind(&input.discord_id) .bind(input.group_id) .bind(&input.track) + .bind(&input.github_user) .bind(input.member_id) .fetch_one(pool.as_ref()) .await?; diff --git a/src/models/member.rs b/src/models/member.rs index 0f2578d..865431e 100644 --- a/src/models/member.rs +++ b/src/models/member.rs @@ -24,6 +24,7 @@ pub struct Member { pub discord_id: String, pub group_id: i32, pub track: Option, + pub github_user: String, #[graphql(skip)] // Don't expose internal fields/meta-data pub created_at: NaiveDateTime, } @@ -40,6 +41,7 @@ pub struct CreateMemberInput { pub discord_id: String, pub group_id: i32, pub track: Option, + pub github_user: String, } #[derive(InputObject)] @@ -55,4 +57,5 @@ pub struct UpdateMemberInput { pub discord_id: Option, pub group_id: Option, pub track: Option, + pub github_user: Option, }