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);not null"`
	LarkUserID string          `json:"larkUserID" gorm:"unique;column:larkUserID;type:varchar(128);not null"`
	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"`
	Avatars    json.RawMessage `json:"avatars" gorm:"column:avatars"`
	Email      string          `json:"email" gorm:"column:email"`
	// Groups     []*Group        `json:"groups" gorm:"many2many:user_group;"`
}

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