Conversation
|
@hrideshmg Could you review this please ? |
d9d2ffe to
f7b758b
Compare
| } | ||
|
|
||
| /// Fetch the details of the currently logged in member | ||
| // Fetch the details of the currently logged in member |
There was a problem hiding this comment.
Mb, I didn't know about the doc comments
Reverted now
There was a problem hiding this comment.
Pull request overview
This PR introduces leave tracking functionality to support the amD Discord bot by creating a Leave table in the database and adding corresponding GraphQL mutation and query operations. The changes enable tracking member leaves with approval workflows and querying leave counts within date ranges.
Changes:
- Created a Leave database table with foreign key references to Member via discord_id, including constraints for leave approval validation
- Added
mark_leavemutation to record new leave entries with discord_id, reason, duration, and optional approver - Added
leave_countquery method to Member type for calculating total leave duration within a date range - Extended the
memberquery to accept discord_id as an optional parameter alongside existing member_id and email options
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 14 comments.
| File | Description |
|---|---|
| migrations/20260214152404_create_leave_table.sql | Creates Leave table schema with foreign keys, defaults, and constraints including self-approval prevention |
| src/models/attendance.rs | Defines MarkLeaveInput, MarkLeaveOutput, and LeaveCountOutput structs for GraphQL API |
| src/graphql/mutations/attendance_mutations.rs | Implements mark_leave mutation to insert leave records with current timestamp |
| src/graphql/queries/member_queries.rs | Adds discord_id parameter to member query and implements leave_count resolver on Member type |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| async fn leave_count( | ||
| &self, | ||
| ctx: &Context<'_>, | ||
| start_date: NaiveDate, | ||
| end_date: NaiveDate, | ||
| ) -> Result<LeaveCountOutput> { |
There was a problem hiding this comment.
leave should be a nested object with two methods under it that return leave_count and records respectively as we need to be able to query on which days the member took a leave.
See the records and updateCount methods under StatusInfo for reference.
There was a problem hiding this comment.
still unresolved, i don't see a nested object or the records query
There was a problem hiding this comment.
leave_count can be called through members and allMembers, so there should be no need for a different records query for all members leave count
|
@hrideshmg I've made the requested changes, could you please review now |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 4 out of 4 changed files in this pull request and generated 7 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
0041ecd to
0746618
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 4 out of 4 changed files in this pull request and generated 7 comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| from_date DATE DEFAULT CURRENT_DATE NOT NULL, | ||
| duration INT DEFAULT 1 NOT NULL, | ||
| reason TEXT NOT NULL, | ||
| applied_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, |
| discord_id VARCHAR(255) REFERENCES Member(discord_id) ON DELETE CASCADE, | ||
| from_date DATE DEFAULT CURRENT_DATE NOT NULL, | ||
| duration INT DEFAULT 1 NOT NULL, | ||
| reason TEXT NOT NULL, | ||
| applied_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, | ||
| approved_by VARCHAR(255) REFERENCES Member(discord_id) ON DELETE SET NULL, |
| #[derive(SimpleObject, FromRow)] | ||
| pub struct MarkLeaveOutput { | ||
| pub discord_id: String, | ||
| pub from_date: NaiveDate, | ||
| pub applied_at: NaiveDateTime, | ||
| pub reason: String, | ||
| pub duration: i32, | ||
| pub approved_by: Option<String>, | ||
| } |
| let discord_id = self | ||
| .discord_id | ||
| .as_ref() | ||
| .expect("Leave count needs discord_id"); |
| start_date: NaiveDate, | ||
| end_date: NaiveDate, | ||
| ) -> Result<i64> { | ||
| let pool = ctx.data::<Arc<PgPool>>().expect("Pool must be in context."); |
| .fetch_one(pool.as_ref()) | ||
| .await?; |
| -- Leave table for tracking leaves | ||
| CREATE TABLE Leave ( | ||
| leave_id SERIAL PRIMARY KEY, | ||
| discord_id VARCHAR(255) REFERENCES Member(discord_id) ON DELETE CASCADE, |
This PR
Leaveforleave_applicationandapprove_leaveleave_countdiscord_idoptional param forMemberobject so amD can query using discord_id itselfleave_countcan be called via member for specific member or allMembers to access leave records of all membersThese are currently meant only to be accessed by amD for marking and fetching leaves