package model

import (
	"time"

	"go.mongodb.org/mongo-driver/bson/primitive"
)

type WebReview struct {
	Id     primitive.ObjectID `bson:"_id,omitempty" json:"_id"`
	UserId primitive.ObjectID `bson:"userId,omitempty" json:"userId"`
	FileId primitive.ObjectID `bson:"fileId,omitempty" json:"fileId"`
	// File3d *OssType           `bson:"file3d,omitempty" json:"file3d"`
	RoomId int    `bson:"roomId,omitempty" json:"roomId"`
	Nick   string `bson:"nick,omitempty" json:"nick"`

	State      int       `bson:"state,omitempty" json:"state"`
	CreateTime time.Time `bson:"createTime,omitempty" json:"createTime"`
	UpdateTime time.Time `bson:"updateTime,omitempty" json:"updateTime"`

	DeviceFlag string `bson:"deviceFlag,omitempty" json:"deviceFlag"`
}

type NativeRender struct {
	Id         primitive.ObjectID `bson:"_id,omitempty" json:"_id"`
	RoomId     primitive.ObjectID `bson:"roomId,omitempty" json:"roomId"`
	CreateTime time.Time          `bson:"createTime,omitempty" json:"createTime"`
	Device     *WorkDevice        `bson:"device,omitempty" json:"device"`
}

type Room struct {
	Id          primitive.ObjectID `bson:"_id,omitempty" json:"_id"`
	ShareId     primitive.ObjectID `bson:"shareId,omitempty" json:"shareId"`
	ThreeFileId primitive.ObjectID `bson:"threeFileId,omitempty" json:"threeFileId"`
	Name        string             `bson:"name,omitempty" json:"name"`
	QueryFlags  string             `bson:"queryFlags,omitempty" json:"queryFlags"`

	WebUsers     []*WebReview  `bson:"webUsers,omitempty" json:"webUsers"`
	NativeRender *NativeRender `bson:"nativeRender,omitempty" json:"nativeRender"`
	MaxUsers     int           `bson:"maxUsers,omitempty" json:"maxUsers"`

	CreateTime time.Time `bson:"createTime,omitempty" json:"createTime"`
	UpdateTime time.Time `bson:"updateTime,omitempty" json:"updateTime"`
	State      int       `bson:"state,omitempty" json:"state"`
}

type WorkDevice struct {
	Id         string `bson:"_id,omitempty" json:"_id"`
	Name       string `bson:"name,omitempty" json:"name"`
	QueryFlags string `bson:"queryFlags,omitempty" json:"queryFlags"`

	NativeRenders    []*NativeRender `bson:"nativeRenders,omitempty" json:"nativeRenders"`
	MaxNativeRenders int             `bson:"maxNativeRenders,omitempty" json:"maxNativeRenders"`

	CreateTime time.Time `bson:"createTime,omitempty" json:"createTime"`
	UpdateTime time.Time `bson:"updateTime,omitempty" json:"updateTime"`
	State      int       `bson:"state,omitempty" json:"state"`
}
