package local

type StartUpLog struct {
	ID             string    `bson:"_id"`
	HostName       string    `bson:"hostname"`
	StartTime      string    `bson:"start_time"`
	StartTimeLocal string    `bson:"start_time_local"`
	CmdLine        CmdLine   `bson:"cmdline"`
	Pid            int       `bson:"pid"`
	BuildInfo      BuildInfo `bson:"buildinfo"`
}

type CmdLine struct {
	Net               Net               `bson:"net"`
	ProcessManagement ProcessManagement `bson:"processManagement"`
	SystemLog         SystemLog         `bson:"systemLog"`
}

type Net struct {
	BindIP string `bson:"bindIp"`
	Port   int    `bson:"port"`
	Tls    TLS    `bson:"tls"`
}

type TLS struct {
	Mode string `bson:"mode"`
}

type ProcessManagement struct {
	Fork        bool   `bson:"fork"`
	PidFilePath string `bson:"pidFilePath"`
}

type SystemLog struct {
	Destination string `bson:"destination"`
	LogAppend   bool   `bson:"logAppend"`
	Path        string `bson:"path"`
}

type BuildInfo struct {
	Version           string           `bson:"version"`
	GitVersion        string           `bson:"gitVersion"`
	Modules           []string         `bson:"modules"`
	Allocator         string           `bson:"allocator"`
	JavaScriptEngine  string           `bson:"javaScriptEngine"`
	SysInfo           string           `bson:"sysInfo"`
	VersionArray      []int            `bson:"versionArray"`
	OpenSSL           OpenSSL          `bson:"openssl"`
	BuildEnvironment  BuildEnvironment `bson:"buildEnvironment"`
	Bits              int              `bson:"bits"`
	Debug             bool             `bson:"debug"`
	MaxBsonObjectSize int              `bson:"maxBsonObjectSize"`
	StorageEngines    []string         `bson:"storageEngines"`
}

type OpenSSL struct {
	Running  string `bson:"running"`
	Compiled string `bson:"compiled"`
}

type BuildEnvironment struct {
	DistMod    string `bson:"distmod"`
	Distarch   string `bson:"distarch"`
	CC         string `bson:"cc"`
	CCFlags    string `bson:"ccflags"`
	CXX        string `bson:"cxx"`
	CXXFlags   string `bson:"cxxflags"`
	LinkFlags  string `bson:"linkflags"`
	TargetArch string `bson:"target_arch"`
	TargetOS   string `bson:"target_os"`
	CPPDefines string `bson:"cppdefines"`
}
