Ryu2804
Deploy files from GitHub repository
20cba6d
Raw
History Blame Contribute Delete
3.18 kB
package entity
import (
"time"
"github.com/google/uuid"
"gorm.io/gorm"
)
type User struct {
ID uuid.UUID `gorm:"type:uuid;default:gen_random_uuid();primaryKey"`
FullName string `gorm:"type:varchar(255);not null"`
Email string `gorm:"type:varchar(255);not null;uniqueIndex"`
Phone string `gorm:"type:varchar(20);not null;uniqueIndex"`
PasswordHash string `gorm:"type:varchar(255);not null"`
Role UserRole `gorm:"type:user_role;not null;default:'user';index"`
AvatarURL *string `gorm:"type:text"`
Address *string `gorm:"type:text"`
Latitude *float64 `gorm:"type:decimal(10,7)"`
Longitude *float64 `gorm:"type:decimal(10,7)"`
IsActive bool `gorm:"not null;default:true;index"`
EmailVerifiedAt *time.Time `gorm:"type:timestamptz"`
PhoneVerifiedAt *time.Time `gorm:"type:timestamptz"`
LastLoginAt *time.Time `gorm:"type:timestamptz"`
CreatedAt time.Time `gorm:"type:timestamptz;not null;autoCreateTime"`
UpdatedAt time.Time `gorm:"type:timestamptz;not null;autoUpdateTime"`
DeletedAt gorm.DeletedAt `gorm:"index"`
}
type RefreshToken struct {
ID uuid.UUID `gorm:"type:uuid;default:gen_random_uuid();primaryKey"`
UserID uuid.UUID `gorm:"type:uuid;not null;index"`
TokenHash string `gorm:"type:varchar(255);not null;index"`
DeviceInfo *string `gorm:"type:varchar(500)"`
IPAddress *string `gorm:"type:inet"`
ExpiresAt time.Time `gorm:"type:timestamptz;not null;index"`
RevokedAt *time.Time `gorm:"type:timestamptz"`
CreatedAt time.Time `gorm:"type:timestamptz;not null;autoCreateTime"`
}
type WorkerProfile struct {
ID uuid.UUID `gorm:"type:uuid;default:gen_random_uuid();primaryKey"`
UserID uuid.UUID `gorm:"type:uuid;not null;uniqueIndex"`
Specialization *string `gorm:"type:varchar(255)"`
Bio *string `gorm:"type:text"`
CoverPhotoURL *string `gorm:"type:text"`
VerificationStatus VerificationStatus `gorm:"type:verification_status;not null;default:'unverified';index"`
IDCardURL *string `gorm:"type:text"`
CertificateURLs JSONB `gorm:"type:jsonb;default:'[]'"`
BasePrice *int `gorm:"type:integer"`
PriceUnit *string `gorm:"type:varchar(50);default:'per kunjungan'"`
BookingFee int `gorm:"type:integer;not null;default:2000"`
RatingAvg float64 `gorm:"type:decimal(2,1);not null;default:0"`
TotalReviews int `gorm:"type:integer;not null;default:0"`
CompletedJobs int `gorm:"type:integer;not null;default:0"`
IsAvailable bool `gorm:"not null;default:true;index"`
VerifiedAt *time.Time `gorm:"type:timestamptz"`
CreatedAt time.Time `gorm:"type:timestamptz;not null;autoCreateTime"`
UpdatedAt time.Time `gorm:"type:timestamptz;not null;autoUpdateTime"`
}