mentorenwahl/backend/src/backend/db/user.cr
Dominic Grimm 7e1eda596c
All checks were successful
continuous-integration/drone/push Build is passing
Update frontend dockerfile
2022-11-13 18:41:53 +01:00

41 lines
918 B
Crystal

module Backend
module Db
Clear.enum UserRole, :teacher, :student
struct UserRole
# API representation of the enum
def to_api : Api::Schema::UserRole
case self
when Student
Api::Schema::UserRole::Student
when Teacher
Api::Schema::UserRole::Teacher
else
raise "Invalid enum value for UserRole"
end
end
# DB representation of the enum
def self.from_api(role : Api::Schema::UserRole) : self
role.to_db
end
end
class User
include Clear::Model
self.table = :users
primary_key type: :serial
column username : String
column role : UserRole
column admin : Bool = false
has_one student : Student?, foreign_key: :user_id
has_one teacher : Teacher?, foreign_key: :user_id
has_many tokens : Token, foreign_key: :user_id
end
end
end