package domain

import "time"

type UUID string

type User struct {
	ID        UUID   `json:"id" db:"id"`
	Username  string `json:"username" db:"username"`
	Password  string `json:"-" db:"password_hash"`
	Role      string `json:"role" db:"role"`
	CreatedAt time.Time
}

type Role struct {
	Name        string
	Permissions []string
}

type PoolHealth struct {
	Pool   string
	Status string
	Detail string
}

type Snapshot struct {
	Name      string
	Dataset   string
	CreatedAt time.Time
}
type Disk struct {
	ID     UUID
	Path   string
	Serial string
	Model  string
	Size   int64
	Health string
}

type Pool struct {
	Name     string
	GUID     string
	Health   string
	Capacity string
}

type Dataset struct {
	Name   string
	Pool   string
	Type   string
	Config map[string]string
}

type Share struct {
	ID     UUID
	Name   string
	Path   string
	Type   string // nfs or smb
	Config map[string]string
}

type LUN struct {
	ID        UUID
	TargetIQN string
	LUNID     int
	Path      string
}

type Job struct {
	ID        UUID
	Type      string
	Status    string
	Progress  int
	Owner     UUID
	CreatedAt time.Time
	UpdatedAt time.Time
	Details   map[string]any
}
