package log

import (
	"context"
	"log/slog"
	"time"
)

// primary struct
type Log struct {
	Ctx       context.Context // context
	Log       *slog.Logger    // slog logger
	SLogLevel slog.LevelVar   // level
}

// field customization
type Customization struct {
	Application       string
	Format            string
	TimeStamp         TimeStamp
	Type              string
	MobileApplication MobileApplication
	Context           RequiredContext
	Extra             ValueAdd
}

type TimeStamp struct {
	Key    string
	Format string
}

type MobileApplication struct {
	DeviceModel string
	DeviceBrand string
	OsType      string
	OsVersion   string
}

type RequiredContext struct {
	AuditID       string
	Channel       string
	Customer      string
	DestPort      string
	HttpMethod    string
	JvmThread     string
	RemoteIP      string
	RequestID     string
	RequestParams string
	ResponseCode  int
	ResponseTime  time.Duration
	SessionID     string
	SubOperation  string
	Uri           string
	UserID        string
}

type ValueAdd struct {
	Customer        string
	Product         string
	RequestDomicile string
}