Skip to content

Instantly share code, notes, and snippets.

@PatrickNiyogitare28
Created September 7, 2023 19:39
Show Gist options
  • Save PatrickNiyogitare28/40581a5b1dc3fd6405194c681f75b9e4 to your computer and use it in GitHub Desktop.
Save PatrickNiyogitare28/40581a5b1dc3fd6405194c681f75b9e4 to your computer and use it in GitHub Desktop.
Table User {
Id uuid [pk]
FirstName varchar
LastName varchar
Email varchar
Phone varchar
Password varchar
Role Role
Status UserStatus
CreatedAt datetime [default: `now()`]
UpdatedAt datetime [default: `now()`]
}
Table Refugee {
Id uuid [pk]
UserId varchar
OriginCountry varchar
Gender Gender
Age int
IdentificationNumber int
RefugeeCamp uuid
RegisteredDate datetime [default: `now()`]
IntegratedDate datetime
IsIntegrated boolean
RegisteredBy uuid
}
Table RefugeeFocalPoint {
Id uuid [pk]
UserId varchar
IdentificationNumber int
RefugeeCamp uuid
CreatedAt datetime [default: `now()`]
UpdatedAt datetime [default: `now()`]
}
Table RefugeeCamps {
Id uuid [pk]
Name varchar [not null]
Location varchar [not null]
CampLead varchar
CreatedAt datetime [default: `now()`]
UpdatedAt datetime [default: `now()`]
}
Table IntegrationRequests {
Id uuid [pk]
Title varchar [not null]
Description varchar
RequestLevel uuid
ConsernedMinistry varchar
ConsernedDistrict varchar
ConsernedSector varchar
RequestStatus RequestStatus
IntegrationType uuid
RequestedBy uuid
CreatedAt datetime [default: `now()`]
UpdatedAt datetime [default: `now()`]
}
Table IntegrationLevels {
Id uuid [pk]
Title varchar [not null]
Description varchar
InChargeRole Role
CreatedAt datetime [default: `now()`]
UpdatedAt datetime [default: `now()`]
}
Table IntegrationTypes {
Id uuid [pk]
Title varchar [not null]
Description varchar
IntegrationRequirements text
CreatedAt datetime [default: `now()`]
UpdatedAt datetime [default: `now()`]
}
Table ConsernedMinistries {
Id uuid [pk]
Name varchar
Description varchar
Location varchar
CreatedAt datetime [default: `now()`]
UpdatedAt datetime [default: `now()`]
}
Table Districts {
Id uuid [pk]
Name varchar [not null]
Region varchar
CreatedAt datetime [default: `now()`]
UpdatedAt datetime [default: `now()`]
}
Table Sectors {
Id uuid [pk]
Name varchar [not null]
DistrictId uuid
CreatedAt datetime [default: `now()`]
UpdatedAt datetime [default: `now()`]
}
Table IntegrationStatus {
Id uuid [pk]
StatusName varchar [not null]
CreatedAt datetime [default: `now()`]
UpdatedAt datetime [default: `now()`]
}
Table IntegrationComments {
Id uuid [pk]
RequestId uuid
Comment text [not null]
CommentedBy uuid
CommentDate datetime [default: `now()`]
}
Table IntegrationDocuments {
Id uuid [pk]
RequestId uuid
DocumentName varchar [not null]
DocumentPath varchar [not null]
UploadedBy uuid
UploadDate datetime [default: `now()`]
}
Table RefugeeSkills {
Id uuid [pk]
RefugeeId uuid
SkillName varchar [not null]
SkillLevel int
CreatedAt datetime [default: `now()`]
UpdatedAt datetime [default: `now()`]
}
Table IntegrationHistory {
Id uuid [pk]
RequestId uuid
Action varchar [not null]
ActionBy uuid
ActionDate datetime [default: `now()`]
}
Table FollowUpActivities {
Id uuid [pk]
Name varchar [not null]
Description text
StartDate datetime
EndDate datetime
CreatedAt datetime [default: `now()`]
UpdatedAt datetime [default: `now()`]
}
Table RefugeeFollowUp {
Id uuid [pk]
RefugeeId uuid
ActivityId uuid
FollowUpDate datetime [default: `now()`]
AttendanceStatus varchar [not null]
Progress varchar
CreatedAt datetime [default: `now()`]
UpdatedAt datetime [default: `now()`]
}
Table FollowUpFeedback {
Id uuid [pk]
RefugeeId uuid
ActivityId uuid
Feedback text
FeedbackDate datetime [default: `now()`]
CreatedAt datetime [default: `now()`]
UpdatedAt datetime [default: `now()`]
}
Table FollowUpOutcomes {
Id uuid [pk]
RefugeeId uuid
ActivityId uuid
Outcome text
OutcomeDate datetime [default: `now()`]
CreatedAt datetime [default: `now()`]
UpdatedAt datetime [default: `now()`]
}
Table MinisterAdmins {
Id uuid [pk]
UserId uuid
MinistryId uuid
CreatedAt datetime [default: `now()`]
UpdatedAt datetime [default: `now()`]
}
Table DistrictAdmins {
Id uuid [pk]
UserId uuid
DistrictId uuid
CreatedAt datetime [default: `now()`]
UpdatedAt datetime [default: `now()`]
}
Table SectorAdmins {
Id uuid [pk]
UserId uuid
SectorId uuid
CreatedAt datetime [default: `now()`]
UpdatedAt datetime [default: `now()`]
}
Enum Role{
ADMIN
UNHCR_ADMIN
CONCERNED_MINISTRY_ADMIN
REFUGEE_FOCAL_POINT
SECTOR_ADMIN
DISTRICT_ADMIN
}
Enum UserStatus {
ACTIVE
INACTIVE
APPROVED
PENDING
REJECTED
}
Enum Gender {
MALE
FEMALE
OTHER
}
Enum RequestStatus {
PENDING
APPROVED
REJECTED
}
// relations
Ref: Refugee.UserId > User.Id
Ref: Refugee.RegisteredBy > User.Id
Ref: RefugeeCamps.CampLead > User.Id
Ref: RefugeeFocalPoint.UserId > User.Id
Ref: Refugee.RefugeeCamp > RefugeeCamps.Id
Ref: IntegrationRequests.RequestedBy > User.Id
Ref: IntegrationRequests.RequestLevel > IntegrationLevels.Id
Ref: IntegrationRequests.IntegrationType > IntegrationTypes.Id
Ref: IntegrationRequests.ConsernedMinistry > ConsernedMinistries.Id
Ref: IntegrationRequests.ConsernedDistrict > Districts.Id
Ref: IntegrationRequests.ConsernedSector > Sectors.Id
Ref: IntegrationRequests.RequestStatus > IntegrationStatus.Id
Ref: IntegrationComments.CommentedBy > User.Id
Ref: MinisterAdmins.MinistryId > ConsernedMinistries.Id
Ref: DistrictAdmins.DistrictId > Districts.Id
Ref: SectorAdmins.SectorId > Sectors.Id
Ref: IntegrationRequests.RequestedBy > Refugee.UserId
Ref: IntegrationComments.RequestId > IntegrationRequests.Id
Ref: IntegrationDocuments.RequestId > IntegrationRequests.Id
Ref: RefugeeSkills.RefugeeId > Refugee.Id
Ref: IntegrationHistory.RequestId > IntegrationRequests.Id
Ref: IntegrationHistory.ActionBy > User.Id
Ref: RefugeeFollowUp.RefugeeId > Refugee.Id
Ref: RefugeeFollowUp.ActivityId > FollowUpActivities.Id
Ref: FollowUpFeedback.RefugeeId > Refugee.Id
Ref: FollowUpFeedback.ActivityId > FollowUpActivities.Id
Ref: FollowUpOutcomes.RefugeeId > Refugee.Id
Ref: FollowUpOutcomes.ActivityId > FollowUpActivities.Id
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment