// Code generated by sqlc. DO NOT EDIT.
// versions:
//   sqlc v1.30.0

package sqlc

import (
	"encoding/json"

	"github.com/jackc/pgx/v5/pgtype"
	"github.com/pgvector/pgvector-go"
)

type BattleReplay struct {
	ID                pgtype.UUID        `json:"id"`
	GeometryID        pgtype.UUID        `json:"geometry_id"`
	ProjectID         pgtype.UUID        `json:"project_id"`
	TargetGeometryIds json.RawMessage    `json:"target_geometry_ids"`
	Detail            json.RawMessage    `json:"detail"`
	IsDeleted         bool               `json:"is_deleted"`
	CreatedAt         pgtype.Timestamptz `json:"created_at"`
	UpdatedAt         pgtype.Timestamptz `json:"updated_at"`
}

type ChatbotHistory struct {
	ID        pgtype.UUID        `json:"id"`
	UserID    pgtype.UUID        `json:"user_id"`
	Question  string             `json:"question"`
	Answer    string             `json:"answer"`
	CreatedAt pgtype.Timestamptz `json:"created_at"`
}

type Commit struct {
	ID           pgtype.UUID        `json:"id"`
	ProjectID    pgtype.UUID        `json:"project_id"`
	SnapshotJson json.RawMessage    `json:"snapshot_json"`
	SnapshotHash pgtype.Text        `json:"snapshot_hash"`
	UserID       pgtype.UUID        `json:"user_id"`
	EditSummary  pgtype.Text        `json:"edit_summary"`
	IsDeleted    bool               `json:"is_deleted"`
	CreatedAt    pgtype.Timestamptz `json:"created_at"`
}

type Conversation struct {
	ID        pgtype.UUID        `json:"id"`
	UserID    pgtype.UUID        `json:"user_id"`
	ModID     pgtype.UUID        `json:"mod_id"`
	Status    int16              `json:"status"`
	ClosedAt  pgtype.Timestamptz `json:"closed_at"`
	CreatedAt pgtype.Timestamptz `json:"created_at"`
	UpdatedAt pgtype.Timestamptz `json:"updated_at"`
}

type Entity struct {
	ID          pgtype.UUID        `json:"id"`
	ProjectID   pgtype.UUID        `json:"project_id"`
	Name        string             `json:"name"`
	Slug        pgtype.Text        `json:"slug"`
	Description pgtype.Text        `json:"description"`
	Status      pgtype.Int2        `json:"status"`
	TimeStart   pgtype.Int4        `json:"time_start"`
	TimeEnd     pgtype.Int4        `json:"time_end"`
	IsDeleted   bool               `json:"is_deleted"`
	CreatedAt   pgtype.Timestamptz `json:"created_at"`
	UpdatedAt   pgtype.Timestamptz `json:"updated_at"`
}

type EntityGeometry struct {
	EntityID   pgtype.UUID `json:"entity_id"`
	GeometryID pgtype.UUID `json:"geometry_id"`
	ProjectID  pgtype.UUID `json:"project_id"`
}

type EntityWiki struct {
	EntityID  pgtype.UUID `json:"entity_id"`
	WikiID    pgtype.UUID `json:"wiki_id"`
	ProjectID pgtype.UUID `json:"project_id"`
}

type Geometry struct {
	ID           pgtype.UUID        `json:"id"`
	GeoType      int16              `json:"geo_type"`
	DrawGeometry json.RawMessage    `json:"draw_geometry"`
	BoundWith    pgtype.UUID        `json:"bound_with"`
	TimeStart    pgtype.Int4        `json:"time_start"`
	TimeEnd      pgtype.Int4        `json:"time_end"`
	Bbox         interface{}        `json:"bbox"`
	ProjectID    pgtype.UUID        `json:"project_id"`
	IsDeleted    bool               `json:"is_deleted"`
	CreatedAt    pgtype.Timestamptz `json:"created_at"`
	UpdatedAt    pgtype.Timestamptz `json:"updated_at"`
}

type Media struct {
	ID           pgtype.UUID        `json:"id"`
	UserID       pgtype.UUID        `json:"user_id"`
	StorageKey   string             `json:"storage_key"`
	OriginalName string             `json:"original_name"`
	MimeType     string             `json:"mime_type"`
	Size         int64              `json:"size"`
	FileMetadata []byte             `json:"file_metadata"`
	CreatedAt    pgtype.Timestamptz `json:"created_at"`
	UpdatedAt    pgtype.Timestamptz `json:"updated_at"`
}

type Message struct {
	ID             pgtype.UUID        `json:"id"`
	ConversationID pgtype.UUID        `json:"conversation_id"`
	SenderID       pgtype.UUID        `json:"sender_id"`
	Content        string             `json:"content"`
	CreatedAt      pgtype.Timestamptz `json:"created_at"`
}

type Project struct {
	ID             pgtype.UUID        `json:"id"`
	Title          string             `json:"title"`
	Description    pgtype.Text        `json:"description"`
	LatestCommitID pgtype.UUID        `json:"latest_commit_id"`
	ProjectStatus  int16              `json:"project_status"`
	LockedBy       pgtype.UUID        `json:"locked_by"`
	IsDeleted      bool               `json:"is_deleted"`
	UserID         pgtype.UUID        `json:"user_id"`
	CreatedAt      pgtype.Timestamptz `json:"created_at"`
	UpdatedAt      pgtype.Timestamptz `json:"updated_at"`
}

type ProjectMember struct {
	ProjectID pgtype.UUID        `json:"project_id"`
	UserID    pgtype.UUID        `json:"user_id"`
	Role      int16              `json:"role"`
	InvitedBy pgtype.UUID        `json:"invited_by"`
	CreatedAt pgtype.Timestamptz `json:"created_at"`
}

type RagChunk struct {
	ID         pgtype.UUID        `json:"id"`
	SourceType string             `json:"source_type"`
	SourceID   pgtype.UUID        `json:"source_id"`
	ProjectID  pgtype.UUID        `json:"project_id"`
	ChunkIndex int32              `json:"chunk_index"`
	Content    string             `json:"content"`
	Embedding  pgvector.Vector    `json:"embedding"`
	CreatedAt  pgtype.Timestamptz `json:"created_at"`
	UpdatedAt  pgtype.Timestamptz `json:"updated_at"`
}

type Role struct {
	ID        pgtype.UUID        `json:"id"`
	Name      string             `json:"name"`
	IsDeleted bool               `json:"is_deleted"`
	CreatedAt pgtype.Timestamptz `json:"created_at"`
	UpdatedAt pgtype.Timestamptz `json:"updated_at"`
}

type Submission struct {
	ID         pgtype.UUID        `json:"id"`
	ProjectID  pgtype.UUID        `json:"project_id"`
	CommitID   pgtype.UUID        `json:"commit_id"`
	UserID     pgtype.UUID        `json:"user_id"`
	Status     int16              `json:"status"`
	ReviewedBy pgtype.UUID        `json:"reviewed_by"`
	ReviewedAt pgtype.Timestamptz `json:"reviewed_at"`
	ReviewNote pgtype.Text        `json:"review_note"`
	Content    pgtype.Text        `json:"content"`
	IsDeleted  bool               `json:"is_deleted"`
	CreatedAt  pgtype.Timestamptz `json:"created_at"`
}

type SystemStatistic struct {
	ID                pgtype.UUID        `json:"id"`
	Date              pgtype.Date        `json:"date"`
	TotalUsers        int32              `json:"total_users"`
	TotalProjects     int32              `json:"total_projects"`
	TotalCommits      int32              `json:"total_commits"`
	TotalSubmissions  int32              `json:"total_submissions"`
	TotalMedias       int32              `json:"total_medias"`
	TotalWikis        int32              `json:"total_wikis"`
	TotalEntities     int32              `json:"total_entities"`
	TotalGeometries   int32              `json:"total_geometries"`
	TotalStorageBytes int64              `json:"total_storage_bytes"`
	NewUsers          int32              `json:"new_users"`
	NewProjects       int32              `json:"new_projects"`
	NewCommits        int32              `json:"new_commits"`
	NewSubmissions    int32              `json:"new_submissions"`
	NewMedias         int32              `json:"new_medias"`
	NewWikis          int32              `json:"new_wikis"`
	NewEntities       int32              `json:"new_entities"`
	NewGeometries     int32              `json:"new_geometries"`
	NewStorageBytes   int64              `json:"new_storage_bytes"`
	CreatedAt         pgtype.Timestamptz `json:"created_at"`
}

type User struct {
	ID           pgtype.UUID        `json:"id"`
	Email        string             `json:"email"`
	PasswordHash pgtype.Text        `json:"password_hash"`
	GoogleID     pgtype.Text        `json:"google_id"`
	AuthProvider string             `json:"auth_provider"`
	IsDeleted    bool               `json:"is_deleted"`
	TokenVersion int32              `json:"token_version"`
	RefreshToken pgtype.Text        `json:"refresh_token"`
	CreatedAt    pgtype.Timestamptz `json:"created_at"`
	UpdatedAt    pgtype.Timestamptz `json:"updated_at"`
}

type UserProfile struct {
	UserID      pgtype.UUID        `json:"user_id"`
	DisplayName pgtype.Text        `json:"display_name"`
	FullName    pgtype.Text        `json:"full_name"`
	AvatarUrl   pgtype.Text        `json:"avatar_url"`
	Bio         pgtype.Text        `json:"bio"`
	Location    pgtype.Text        `json:"location"`
	Website     pgtype.Text        `json:"website"`
	CountryCode pgtype.Text        `json:"country_code"`
	Phone       pgtype.Text        `json:"phone"`
	CreatedAt   pgtype.Timestamptz `json:"created_at"`
	UpdatedAt   pgtype.Timestamptz `json:"updated_at"`
}

type UserRole struct {
	UserID pgtype.UUID `json:"user_id"`
	RoleID pgtype.UUID `json:"role_id"`
}

type UserVerification struct {
	ID         pgtype.UUID        `json:"id"`
	UserID     pgtype.UUID        `json:"user_id"`
	VerifyType int16              `json:"verify_type"`
	Content    pgtype.Text        `json:"content"`
	IsDeleted  bool               `json:"is_deleted"`
	Status     int16              `json:"status"`
	ReviewedBy pgtype.UUID        `json:"reviewed_by"`
	ReviewNote pgtype.Text        `json:"review_note"`
	ReviewedAt pgtype.Timestamptz `json:"reviewed_at"`
	CreatedAt  pgtype.Timestamptz `json:"created_at"`
}

type VerificationMedia struct {
	VerificationID pgtype.UUID `json:"verification_id"`
	MediaID        pgtype.UUID `json:"media_id"`
}

type Wiki struct {
	ID        pgtype.UUID        `json:"id"`
	ProjectID pgtype.UUID        `json:"project_id"`
	Title     pgtype.Text        `json:"title"`
	Slug      pgtype.Text        `json:"slug"`
	IsDeleted bool               `json:"is_deleted"`
	CreatedAt pgtype.Timestamptz `json:"created_at"`
	UpdatedAt pgtype.Timestamptz `json:"updated_at"`
}

type WikiContent struct {
	ID        pgtype.UUID        `json:"id"`
	WikiID    pgtype.UUID        `json:"wiki_id"`
	Title     string             `json:"title"`
	Content   pgtype.Text        `json:"content"`
	Preview   pgtype.Text        `json:"preview"`
	IsDeleted bool               `json:"is_deleted"`
	CreatedAt pgtype.Timestamptz `json:"created_at"`
}
