Documentation ¶
Index ¶
- func GetContentPrefix(contactType ContactType) string
- type Category
- type CategoryRequestBody
- type Club
- type ClubQueryParams
- type ClubSearch
- type Clubs
- type College
- type Comment
- type Contact
- type ContactType
- type CreateClubRequestBody
- type CreateClubTagsRequestBody
- type CreateEventRequestBody
- type CreateFileRequestBody
- type CreatePointOfContactBody
- type CreateSeriesRequestBody
- type CreateTagRequestBody
- type CreateUserRequestBody
- type CreateUserTagsBody
- type EmailRequestBody
- type Event
- type EventInstanceException
- type EventSeries
- type EventType
- type File
- type FileInfo
- type Follower
- type GraduationCycle
- type LoginUserResponseBody
- type Major
- type Membership
- type MembershipType
- type Model
- type Notification
- type NotificationType
- type PointOfContact
- type PutContactRequestBody
- type RecruitmentCycle
- type RecruitmentType
- type RecurringType
- type RefreshTokenRequestBody
- type Series
- type Tabler
- type Tag
- type Tokens
- type UpdateClubRequestBody
- type UpdateEventRequestBody
- type UpdatePasswordRequestBody
- type UpdatePointOfContactBody
- type UpdateSeriesRequestBody
- type UpdateTagRequestBody
- type UpdateUserRequestBody
- type User
- type UserRole
- type Verification
- type VerificationType
- type VerifyEmailRequestBody
- type VerifyPasswordResetTokenRequestBody
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GetContentPrefix ¶
func GetContentPrefix(contactType ContactType) string
Types ¶
type CategoryRequestBody ¶
type CategoryRequestBody struct {
Name string `json:"name" validate:"required,max=255"`
}
type Club ¶
type Club struct { Model SoftDeletedAt gorm.DeletedAt `gorm:"type:timestamptz;default:NULL" json:"-" validate:"-"` Name string `gorm:"type:varchar(255);not null" json:"name" validate:"required,max=255"` Preview string `gorm:"type:varchar(255);not null" json:"preview" validate:"required,max=255"` Description string `gorm:"type:text;not null" json:"description" validate:"required,http_url,s3_url,max=255"` NumMembers int `gorm:"type:int;not null" json:"num_members" validate:"required,min=1"` IsRecruiting bool `gorm:"type:bool;default:false;not null" json:"is_recruiting" validate:"required"` RecruitmentCycle RecruitmentCycle `` /* 137-byte string literal not displayed */ RecruitmentType RecruitmentType `` /* 144-byte string literal not displayed */ WeeklyTimeCommitment int `gorm:"type:int;default:NULL" json:"weekly_time_commitment" validate:"omitempty,min=1"` OneWordToDescribeUs string `gorm:"type:varchar(255);default:NULL" json:"one_word_to_describe_us" validate:"omitempty,max=255"` ApplicationLink string `gorm:"type:varchar(255);default:NULL" json:"application_link" validate:"required,max=255,http_url"` Logo string `gorm:"type:varchar(255);default:NULL" json:"logo" validate:"omitempty,http_url,s3_url,max=255"` Parent *uuid.UUID `gorm:"foreignKey:Parent" json:"-" validate:"uuid4"` Tag []Tag `gorm:"many2many:club_tags;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` Admin []User `gorm:"many2many:user_club_admins;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"required"` Member []User `gorm:"many2many:user_club_members;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"required"` Follower []User `gorm:"many2many:user_club_followers;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` IntendedApplicant []User `gorm:"many2many:user_club_intended_applicants;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` Comment []Comment `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` PointOfContact []PointOfContact `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` Contact []Contact `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` // Event HostEvent []Event `gorm:"foreignKey:Host;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` Event []Event `gorm:"many2many:club_events;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` Notifcation []Notification `gorm:"polymorphic:Reference;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` }
func (*Club) EmbeddingString ¶
type ClubQueryParams ¶
type ClubQueryParams struct { Tags []string `query:"tags"` MinMembers int `query:"min_members"` MaxMembers int `query:"max_members"` RecruitmentCycle *RecruitmentCycle `query:"recruitment_cycle"` IsRecruiting *bool `query:"is_recruiting"` Limit int `query:"limit"` Page int `query:"page"` Search string `query:"search"` }
func (*ClubQueryParams) IntoWhere ¶
func (cqp *ClubQueryParams) IntoWhere() string
type ClubSearch ¶
type ClubSearch struct {
SearchString string `query:"search"`
}
func NewClubSearch ¶
func NewClubSearch(searchQuery string) *ClubSearch
func (*ClubSearch) EmbeddingString ¶
func (cs *ClubSearch) EmbeddingString() string
func (*ClubSearch) Namespace ¶
func (cs *ClubSearch) Namespace() string
type College ¶
type College string
const ( CAMD College = "CAMD" // College of Arts, Media and Design DMSB College = "DMSB" // D'Amore-McKim School of Business KCCS College = "KCCS" // Khoury College of Computer Sciences CE College = "CE" // College of Engineering BCHS College = "BCHS" // Bouvé College of Health Sciences SL College = "SL" // School of Law CPS College = "CPS" // College of Professional Studies CS College = "CS" // College of Science CSSH College = "CSSH" // College of Social Sciences and Humanities )
type Comment ¶
type Comment struct { Model Question string `gorm:"type:varchar(255);not null" json:"question" validate:"required,max=255"` Answer string `gorm:"type:varchar(255);not null" json:"answer" validate:",max=255"` NumFoundHelpful uint `gorm:"type:int;default:0;not null" json:"num_found_helpful" validate:"min=0"` AskedByID uuid.UUID `gorm:"type:uuid;not null" json:"-" validate:"uuid4"` AskedBy User `gorm:"foreignKey:AskedByID;not null" json:"-" validate:"-"` ClubID uuid.UUID `gorm:"type:uuid;not null" json:"-" validate:"uuid4"` Club Club `gorm:"foreignKey:ClubID;not null" json:"-" validate:"-"` AnsweredByID *uuid.UUID `gorm:"type:uuid" json:"-" validate:"uuid4"` AnsweredBy *User `gorm:"foreignKey:AnsweredBy" json:"-" validate:"-"` }
type Contact ¶
type Contact struct { Model Type ContactType `` /* 184-byte string literal not displayed */ Content string `gorm:"type:varchar(255);not null" json:"content" validate:"required,max=255"` ClubID uuid.UUID `gorm:"foreignKey:ClubID;uniqueIndex:idx_contact_type;not null" json:"-" validate:"uuid4"` }
type ContactType ¶
type ContactType string
const ( Facebook ContactType = "facebook" Instagram ContactType = "instagram" X ContactType = "x" LinkedIn ContactType = "linkedin" YouTube ContactType = "youtube" GitHub ContactType = "github" Slack ContactType = "slack" Discord ContactType = "discord" Email ContactType = "email" CustomSite ContactType = "customSite" )
type CreateClubRequestBody ¶
type CreateClubRequestBody struct { UserID uuid.UUID `json:"user_id" validate:"required,uuid4"` Name string `json:"name" validate:"required,max=255"` Preview string `json:"preview" validate:"required,max=255"` Description string `json:"description" validate:"required,http_url,s3_url,max=255"` IsRecruiting bool `json:"is_recruiting" validate:"required"` RecruitmentCycle RecruitmentCycle `json:"recruitment_cycle" validate:"required,max=255,oneof=fall spring fallSpring always"` RecruitmentType RecruitmentType `json:"recruitment_type" validate:"required,max=255,oneof=unrestricted tryout application"` WeeklyTimeCommitment *int `json:"weekly_time_commitment" validate:"omitempty,min=1"` OneWordToDescribeUs string `json:"one_word_to_describe_us" validate:"omitempty,max=255"` ApplicationLink string `json:"application_link" validate:"required,max=255,http_url"` Logo string `json:"logo" validate:"omitempty,http_url,s3_url,max=255"` }
type CreateEventRequestBody ¶
type CreateEventRequestBody struct { Name string `json:"name" validate:"required,max=255"` Preview string `json:"preview" validate:"required,max=255"` Content string `json:"content" validate:"required,max=255"` StartTime time.Time `json:"start_time" validate:"required,ltecsfield=EndTime"` EndTime time.Time `json:"end_time" validate:"required,gtecsfield=StartTime"` Location string `json:"location" validate:"required,max=255"` EventType EventType `json:"event_type" validate:"required,max=255,oneof=open membersOnly"` IsRecurring *bool `json:"is_recurring" validate:"required"` // TODO club/tag/notification logic Host *uuid.UUID `json:"host" validate:"required,uuid4"` Clubs []Club `json:"-" validate:"omitempty"` Tag []Tag `json:"-" validate:"omitempty"` Notification []Notification `json:"-" validate:"omitempty"` // TODO validate if isRecurring, then series is required Series CreateSeriesRequestBody `json:"series" validate:"-"` }
TODO We will likely need to update the create and update structs to account for recurring series
type CreateFileRequestBody ¶
type CreateSeriesRequestBody ¶
type CreateSeriesRequestBody struct { RecurringType RecurringType `json:"recurring_type" validate:"required,max=255,oneof=daily weekly monthly"` MaxOccurrences int `json:"max_occurrences" validate:"required,min=2"` }
type CreateTagRequestBody ¶
type CreateUserRequestBody ¶
type CreateUserRequestBody struct { FirstName string `json:"first_name" validate:"required,max=255"` LastName string `json:"last_name" validate:"required,max=255"` Email string `json:"email" validate:"required,email,neu_email,max=255"` Password string `json:"password" validate:"required,max=255"` // MARK: must be validated manually // Optional fields Major0 Major `` /* 2621-byte string literal not displayed */ Major1 Major `` /* 2621-byte string literal not displayed */ Major2 Major `` /* 2621-byte string literal not displayed */ College College `json:"college" validate:"omitempty,oneof=CAMD DMSB KCCS CE BCHS SL CPS CS CSSH"` GraduationCycle GraduationCycle `json:"graduation_cycle" validate:"omitempty,max=255,oneof=december may"` GraduationYear int16 `json:"graduation_year" validate:"omitempty"` }
type CreateUserTagsBody ¶
type EmailRequestBody ¶
type EmailRequestBody struct {
Email string `json:"email" validate:"required,email"`
}
type Event ¶
type Event struct { Model Name string `gorm:"type:varchar(255);not null" json:"name" validate:"required,max=255"` Preview string `gorm:"type:varchar(255);not null" json:"preview" validate:"required,max=255"` Content string `gorm:"type:text;not null" json:"content" validate:"required,max=255"` StartTime time.Time `gorm:"type:timestamptz;not null" json:"start_time" validate:"required,ltecsfield=EndTime"` EndTime time.Time `gorm:"type:timestamptz;not null" json:"end_time" validate:"required,gtecsfield=StartTime"` Location string `gorm:"type:varchar(255);not null" json:"location" validate:"required,max=255"` EventType EventType `gorm:"type:varchar(255);default:open;not null" json:"event_type" validate:"required,max=255,oneof=open membersOnly"` IsRecurring bool `gorm:"type:bool;default:false;not null" json:"is_recurring" validate:"-"` MeetingLink string `gorm:"type:varchar(255);" json:"meeting_link" validate:"url"` Host *uuid.UUID `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE;not null;" json:"host" validate:"uuid4"` RSVP []User `gorm:"many2many:user_event_rsvps;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` Waitlist []User `gorm:"many2many:user_event_waitlists;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` Clubs []Club `gorm:"many2many:club_events;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` Tag []Tag `gorm:"many2many:event_tags;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` Notification []Notification `gorm:"polymorphic:Reference;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` }
type EventInstanceException ¶
type EventInstanceException struct { Model EventID int `gorm:"type:uuid;not null" json:"event_id" validate:"required"` Event Event IsRescheduled bool `gorm:"type:bool;default:true;not null" json:"is_rescheduled" validate:"required"` IsCancelled bool `gorm:"type:bool;default:false;not null" json:"is_cancelled" validate:"required"` StartTime time.Time `gorm:"type:timestamptz;not null" json:"start_time" validate:"required,datetime,ltecsfield=EndTime"` EndTime time.Time `gorm:"type:timestamptz;not null" json:"end_time" validate:"required,datetime,gtecsfield=StartTime"` }
Not needed for now, we will just update the events separately
type EventSeries ¶
type EventSeries struct { EventID uuid.UUID `gorm:"type:uuid;not null" json:"event_id" validate:"uuid4"` Event Event `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` SeriesID uuid.UUID `gorm:"type:uuid;not null" json:"series_id" validate:"uuid4"` Series Series `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` }
type File ¶
type File struct { Model OwnerID uuid.UUID `gorm:"uniqueIndex:compositeindex;index;not null;type:uuid" json:"-" validate:"required,uuid4"` OwnerType string `gorm:"uniqueIndex:compositeindex;index;not null;type:varchar(255)" json:"-" validate:"required,max=255"` FileName string `gorm:"type:varchar(255);not null" json:"file_name" validate:"required,max=255"` FileType string `gorm:"type:varchar(255);not null" json:"file_type" validate:"required,max=255"` FileSize int `gorm:"type:int;not null" json:"file_size" validate:"required,min=1"` FileURL string `gorm:"type:varchar(255);not null" json:"file_url" validate:"required,max=255"` ObjectKey string `gorm:"type:varchar(255);not null" json:"object_key" validate:"required,max=255"` }
type Follower ¶
type Follower struct { UserID uuid.UUID `gorm:"type:uuid;primaryKey;not null" json:"user_id" validate:"required,uuid4"` ClubID uuid.UUID `gorm:"type:uuid;primaryKey;not null" json:"club_id" validate:"required,uuid4"` Club *Club `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` User *User `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` }
type GraduationCycle ¶
type GraduationCycle string
const ( December GraduationCycle = "december" May GraduationCycle = "may" )
type LoginUserResponseBody ¶
type Major ¶
type Major string
const ( AfricanaStudies Major = "africanaStudies" AmericanSignLanguage Major = "americanSignLanguage" AmericanSignLanguageEnglishInterpreting Major = "americanSignLanguage-EnglishInterpreting" AppliedPhysics Major = "appliedPhysics" ArchitecturalStudies Major = "architecturalStudies" Architecture Major = "architecture" ArtArtVisualStudies Major = "art:ArtVisualStudies" BehavioralNeuroscience Major = "behavioralNeuroscience" Biochemistry Major = "biochemistry" Bioengineering Major = "bioengineering" Biology Major = "biology" BiomedicalPhysics Major = "biomedicalPhysics" BusinessAdministration Major = "businessAdministration" BusinessAdministrationAccounting Major = "businessAdministration:Accounting" BusinessAdministrationAccountingAndAdvisoryServices Major = "businessAdministration:AccountingAndAdvisoryServices" BusinessAdministrationBrandManagement Major = "businessAdministration:BrandManagement" BusinessAdministrationBusinessAnalytics Major = "businessAdministration:BusinessAnalytics" BusinessAdministrationCorporateInnovation Major = "businessAdministration:CorporateInnovation" BusinessAdministrationEntrepreneurialStartups Major = "businessAdministration:EntrepreneurialStartups" BusinessAdministrationFamilyBusiness Major = "businessAdministration:FamilyBusiness" BusinessAdministrationFinance Major = "businessAdministration:Finance" BusinessAdministrationFintech Major = "businessAdministration:Fintech" BusinessAdministrationHealthcareManagementAndConsulting Major = "businessAdministration:HealthcareManagementAndConsulting" BusinessAdministrationManagement Major = "businessAdministration:Management" BusinessAdministrationManagementInformationSystems Major = "businessAdministration:ManagementInformationSystems" BusinessAdministrationMarketing Major = "businessAdministration:Marketing" BusinessAdministrationMarketingAnalytics Major = "businessAdministration:MarketingAnalytics" BusinessAdministrationSocialInnovationAndEntrepreneurship Major = "businessAdministration:SocialInnovationAndEntrepreneurship" BusinessAdministrationSupplyChainManagement Major = "businessAdministration:SupplyChainManagement" CellAndMolecularBiology Major = "cellAndMolecularBiology" ChemicalEngineering Major = "chemicalEngineering" Chemistry Major = "chemistry" CivilEngineering Major = "civilEngineering" CommunicationStudies Major = "communicationStudies" ComputerEngineering Major = "computerEngineering" ComputerScience Major = "computerScience" ComputingAndLaw Major = "computingAndLaw" CriminologyAndCriminalJustice Major = "criminologyAndCriminalJustice" CulturalAnthropology Major = "culturalAnthropology" Cybersecurity Major = "cybersecurity" DataScience Major = "dataScience" Design Major = "design" Economics Major = "economics" ElectricalEngineering Major = "electricalEngineering" English Major = "english" EnvironmentalAndSustainabilityStudies Major = "environmentalAndSustainabilityStudies" EnvironmentalEngineering Major = "environmentalEngineering" EnvironmentalScience Major = "environmentalScience" EnvironmentalStudies Major = "environmentalStudies" GameArtAndAnimation Major = "gameArtAndAnimation" GameDesign Major = "gameDesign" GlobalAsianStudies Major = "globalAsianStudies" HealthScience Major = "healthScience" History Major = "history" HistoryCultureAndLaw Major = "historyCultureAndLaw" HumanServices Major = "humanServices" IndustrialEngineering Major = "industrialEngineering" InternationalAffairs Major = "internationalAffairs" InternationalBusiness Major = "internationalBusiness" InternationalBusinessAccounting Major = "internationalBusiness:Accounting" InternationalBusinessAccountingAndAdvisoryServices Major = "internationalBusiness:AccountingAndAdvisoryServices" InternationalBusinessBrandManagement Major = "internationalBusiness:BrandManagement" InternationalBusinessBusinessAnalytics Major = "internationalBusiness:BusinessAnalytics" InternationalBusinessCorporateInnovation Major = "internationalBusiness:CorporateInnovation" InternationalBusinessEntrepreneurialStartups Major = "internationalBusiness:EntrepreneurialStartups" InternationalBusinessFamilyBusiness Major = "internationalBusiness:FamilyBusiness" InternationalBusinessFinance Major = "internationalBusiness:Finance" InternationalBusinessFintech Major = "internationalBusiness:Fintech" InternationalBusinessHealthcareManagementAndConsulting Major = "internationalBusiness:HealthcareManagementAndConsulting" InternationalBusinessManagement Major = "internationalBusiness:Management" InternationalBusinessManagementInformationSystems Major = "internationalBusiness:ManagementInformationSystems" InternationalBusinessMarketing Major = "internationalBusiness:Marketing" InternationalBusinessMarketingAnalytics Major = "internationalBusiness:MarketingAnalytics" InternationalBusinessSocialInnovationAndEntrepreneurship Major = "internationalBusiness:SocialInnovationAndEntrepreneurship" InternationalBusinessSupplyChainManagement Major = "internationalBusiness:SupplyChainManagement" Journalism Major = "journalism" LandscapeArchitecture Major = "landscapeArchitecture" Linguistics Major = "linguistics" MarineBiology Major = "marineBiology" Mathematics Major = "mathematics" MechanicalEngineering Major = "mechanicalEngineering" MediaAndScreenStudies Major = "mediaAndScreenStudies" MediaArts Major = "mediaArts" Music Major = "music" MusicTechnology Major = "musicTechnology" Nursing Major = "nursing" PharmaceuticalSciences Major = "pharmaceuticalSciences" PharmacyPharmD Major = "pharmacy(PharmD)" Philosophy Major = "philosophy" Physics Major = "physics" PoliticalScience Major = "politicalScience" PoliticsPhilosophyEconomics Major = "politicsPhilosophyEconomics" Psychology Major = "psychology" PublicHealth Major = "publicHealth" PublicRelations Major = "publicRelations" ReligiousStudies Major = "religiousStudies" Sociology Major = "sociology" Spanish Major = "spanish" SpeechLanguagePathologyAndAudiology Major = "speechLanguagePathologyAndAudiology" Theatre Major = "theatre" )
see https://admissions.northeastern.edu/academics/areas-of-study/
type Membership ¶
type Membership struct { UserID uuid.UUID `gorm:"type:uuid;primaryKey;not null" json:"user_id" validate:"required,uuid4"` ClubID uuid.UUID `gorm:"type:uuid;primaryKey;not null" json:"club_id" validate:"required,uuid4"` Club *Club `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` User *User `gorm:"constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` MembershipType MembershipType `gorm:"type:varchar(255);default:member;not null" json:"membership_type" validate:"required,oneof=member admin"` }
func (Membership) TableName ¶
func (Membership) TableName() string
type MembershipType ¶
type MembershipType string
const ( MembershipTypeMember MembershipType = "member" MembershipTypeAdmin MembershipType = "admin" )
type Model ¶
type Model struct { ID uuid.UUID `gorm:"type:uuid;primaryKey;default:uuid_generate_v4();not null" json:"id" example:"123e4567-e89b-12d3-a456-426614174000"` CreatedAt time.Time `gorm:"type:timestamp;default:CURRENT_TIMESTAMP;not null" json:"created_at" example:"2023-09-20T16:34:50Z"` UpdatedAt time.Time `gorm:"type:timestamp;default:CURRENT_TIMESTAMP;not null" json:"updated_at" example:"2023-09-20T16:34:50Z"` }
type Notification ¶
type Notification struct { Model SendAt time.Time `gorm:"type:timestamptz;not null" json:"send_at" validate:"required"` Title string `gorm:"type:varchar(255);not null" json:"title" validate:"required,max=255"` Content string `gorm:"type:varchar(255);not null" json:"content" validate:"required,max=255"` DeepLink string `gorm:"type:varchar(255);not null" json:"deep_link" validate:"required,max=255"` Icon string `gorm:"type:varchar(255);not null" json:"icon" validate:"required,s3_url,http_url,max=255"` ReferenceID uuid.UUID `gorm:"type:int;not null" json:"-" validate:"uuid4"` ReferenceType NotificationType `gorm:"type:varchar(255);not null" json:"-" validate:"max=255"` }
type NotificationType ¶
type NotificationType string
const ( EventNotification NotificationType = "event" ClubNotification NotificationType = "club" )
type PointOfContact ¶
type PointOfContact struct { Model Name string `gorm:"type:varchar(255);not null" json:"name" validate:"required,max=255"` Email string `gorm:"uniqueIndex:compositeindex;index;not null;type:varchar(255)" json:"email" validate:"required,email,max=255"` Position string `gorm:"type:varchar(255);not null" json:"position" validate:"required,max=255"` ClubID uuid.UUID `gorm:"uniqueIndex:compositeindex;index;foreignKey:ClubID;not null" json:"-" validate:"required,uuid4"` PhotoFile File `gorm:"polymorphic:Owner;not null" json:"photo_file"` }
type PutContactRequestBody ¶
type PutContactRequestBody struct { Type ContactType `` /* 137-byte string literal not displayed */ Content string `json:"content" validate:"required,contact_pointer,max=255"` }
type RecruitmentCycle ¶
type RecruitmentCycle string
const ( Fall RecruitmentCycle = "fall" Spring RecruitmentCycle = "spring" FallSpring RecruitmentCycle = "fallSpring" Always RecruitmentCycle = "always" )
type RecruitmentType ¶
type RecruitmentType string
const ( Unrestricted RecruitmentType = "unrestricted" Tryout RecruitmentType = "tryout" Application RecruitmentType = "application" )
type RecurringType ¶
type RecurringType string
const ( Daily RecurringType = "daily" Weekly RecurringType = "weekly" Monthly RecurringType = "monthly" )
type RefreshTokenRequestBody ¶
type RefreshTokenRequestBody struct {
RefreshToken string `json:"refresh_token" validate:"required"`
}
type Series ¶
type Series struct { Model RecurringType RecurringType `gorm:"type:varchar(255);default:open;not null" json:"recurring_type" validate:"max=255"` MaxOccurrences int `gorm:"type:int;not null" json:"max_occurrences" validate:"min=1"` Events []Event `gorm:"many2many:event_series;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"events" validate:"-"` }
type Tag ¶
type Tag struct { Model Name string `gorm:"type:varchar(255);not null" json:"name" validate:"required,max=255"` CategoryID uuid.UUID `gorm:"type:uuid;not null" json:"category_id" validate:"required,uuid4"` User []User `gorm:"many2many:user_tags;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` Club []Club `gorm:"many2many:club_tags;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` Event []Event `gorm:"many2many:event_tags;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` }
type UpdateClubRequestBody ¶
type UpdateClubRequestBody struct { Name string `json:"name" validate:"omitempty,max=255"` Preview string `json:"preview" validate:"omitempty,max=255"` Description string `json:"description" validate:"omitempty,http_url,s3_url,max=255"` IsRecruiting bool `json:"is_recruiting" validate:"omitempty"` RecruitmentCycle RecruitmentCycle `json:"recruitment_cycle" validate:"required,max=255,oneof=fall spring fallSpring always"` RecruitmentType RecruitmentType `json:"recruitment_type" validate:"required,max=255,oneof=unrestricted tryout application"` WeeklyTimeCommitment *int `json:"weekly_time_commitment" validate:"omitempty,min=1"` OneWordToDescribeUs string `json:"one_word_to_describe_us" validate:"omitempty,max=255"` ApplicationLink string `json:"application_link" validate:"omitempty,required,max=255,http_url"` Logo string `json:"logo" validate:"omitempty,s3_url,max=255,http_url"` }
type UpdateEventRequestBody ¶
type UpdateEventRequestBody struct { Name string `json:"name" validate:"omitempty,max=255"` Preview string `json:"preview" validate:"omitempty,max=255"` Content string `json:"content" validate:"omitempty,max=255"` StartTime time.Time `json:"start_time" validate:"omitempty,ltecsfield=EndTime"` EndTime time.Time `json:"end_time" validate:"omitempty,gtecsfield=StartTime"` Location string `json:"location" validate:"omitempty,max=255"` EventType EventType `json:"event_type" validate:"omitempty,max=255,oneof=open membersOnly"` Host *uuid.UUID `json:"host" validate:"omitempty"` RSVP []User `json:"-" validate:"omitempty"` Waitlist []User `json:"-" validate:"omitempty"` Clubs []Club `json:"-" validate:"omitempty"` Tag []Tag `json:"-" validate:"omitempty"` Notification []Notification `json:"-" validate:"omitempty"` }
type UpdateSeriesRequestBody ¶
type UpdateSeriesRequestBody struct { RecurringType RecurringType `json:"recurring_type" validate:"omitempty,max=255,oneof=daily weekly monthly"` MaxOccurrences int `json:"max_occurrences" validate:"omitempty,min=2"` EventDetails UpdateEventRequestBody `json:"event_details" validate:"omitempty"` }
TODO: probably need to make changes to this to update the events as well
type UpdateTagRequestBody ¶
type UpdateUserRequestBody ¶
type UpdateUserRequestBody struct { FirstName string `json:"first_name" validate:"omitempty,max=255"` LastName string `json:"last_name" validate:"omitempty,max=255"` Major0 Major `` /* 2621-byte string literal not displayed */ Major1 Major `` /* 2621-byte string literal not displayed */ Major2 Major `` /* 2621-byte string literal not displayed */ College College `json:"college" validate:"omitempty,oneof=CAMD DMSB KCCS CE BCHS SL CPS CS CSSH"` GraduationCycle GraduationCycle `json:"graduation_cycle" validate:"omitempty,max=255,oneof=december may"` GraduationYear int16 `json:"graduation_year" validate:"omitempty"` }
type User ¶
type User struct { Model Role UserRole `gorm:"type:varchar(255);default:'student';not null" json:"role" validate:"required,oneof=super student"` FirstName string `gorm:"type:varchar(255);not null" json:"first_name" validate:"required,max=255"` LastName string `gorm:"type:varchar(255);not null" json:"last_name" validate:"required,max=255"` Email string `gorm:"type:varchar(255);unique;not null" json:"email" validate:"required,email,max=255"` PasswordHash string `gorm:"type:varchar(97);not null" json:"-" validate:"required,len=97"` Major0 Major `` /* 2645-byte string literal not displayed */ Major1 Major `` /* 2647-byte string literal not displayed */ Major2 Major `` /* 2647-byte string literal not displayed */ College College `gorm:"type:varchar(255);" json:"college" validate:"required,max=255"` GraduationCycle GraduationCycle `gorm:"type:varchar(255);" json:"graduation_cycle" validate:"required,max=255,oneof=december may"` GraduationYear int16 `gorm:"type:smallint;" json:"graduation_year" validate:"required"` IsVerified bool `gorm:"type:boolean;default:false;not null" json:"is_verified"` Tag []Tag `gorm:"many2many:user_tags;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` Admin []Club `gorm:"many2many:user_club_admins;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` Member []Club `gorm:"many2many:user_club_members;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` Follower []Club `gorm:"many2many:user_club_followers;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` IntendedApplicant []Club `gorm:"many2many:user_club_intended_applicants;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` Asked []Comment `gorm:"foreignKey:AskedByID;constraint:OnUpdate:CASCADE,OnDelete:SET NULL;" json:"-" validate:"-"` Answered []Comment `gorm:"foreignKey:AnsweredByID;constraint:OnUpdate:CASCADE,OnDelete:SET NULL;" json:"-" validate:"-"` RSVP []Event `gorm:"many2many:user_event_rsvps;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` Waitlist []Event `gorm:"many2many:user_event_waitlists;constraint:OnUpdate:CASCADE,OnDelete:CASCADE;" json:"-" validate:"-"` }
type Verification ¶
type Verification struct { UserID uuid.UUID `gorm:"type:varchar(36);primaryKey;not null" json:"user_id" validate:"required,uuid4"` Token string `gorm:"type:varchar(255);unique" json:"token" validate:"required,max=255"` ExpiresAt time.Time `gorm:"type:timestamp;primaryKey;not null" json:"expires_at" validate:"required"` Type VerificationType `gorm:"type:varchar(255);not null" json:"type" validate:"required,oneof=email_verification password_reset"` }
type VerificationType ¶
type VerificationType string
const ( EmailVerificationType VerificationType = "email_verification" PasswordResetType VerificationType = "password_reset" )
type VerifyEmailRequestBody ¶
Click to show internal directories.
Click to hide internal directories.