package v1

import (
	"database/sql"
	"encoding/json"
	"time"

	"gorm.io/gorm"
)

type User struct {
	ID               uint64          `json:"id" gorm:"primary_key;AUTO_INCREMENT;column:id"`
	AuthingID        string          `json:"authingID" gorm:"unique;column:authingID;type:varchar(128)"`
	LarkUserID       string          `json:"larkUserID" gorm:"unique;column:larkUserID;type:varchar(128)"`
	MainDepartmentID string          `json:"mainDepartmentID" gorm:"unique;column:mainDepartmentID;type:varchar(128)"`
	CreatedAt        time.Time       `json:"createdAt" gorm:"column:createdAt"`
	UpdatedAt        sql.NullTime    `json:"updatedAt" gorm:"column:updatedAt"`
	DeletedAt        gorm.DeletedAt  `json:"deletedAt" gorm:"column:deletedAt"`
	SyncedAt         time.Time       `json:"syncedAt" gorm:"column:syncedAt"`
	Name             string          `json:"name" gorm:"column:name"`
	EnName           string          `json:"enName" gorm:"column:enName"`
	Avatars          json.RawMessage `json:"avatars" gorm:"column:avatars"`
	Email            string          `json:"email" gorm:"column:email"`
	LarkOpenID       string          `json:"larkOpenID" gorm:"column:larkOpenID"`
	AwsPID           string          `json:"awsPID" gorm:"column:awsPID"`
}

func (m *User) TableName() string {
	return "user"
}
