// Package environment provides primitives to interact with the openapi HTTP API.
//
// Code generated by github.com/oapi-codegen/oapi-codegen/v2 version v2.5.1 DO NOT EDIT.
package environment

import (
	"github.com/meshery/schemas/models/core"
	"github.com/gofrs/uuid"
)

// Environment Environments allow you to logically group related Connections and their associated Credentials. Learn more at https://docs.meshery.io/concepts/logical/environments
type Environment struct {
	// Id A Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
	ID core.Uuid `db:"id" json:"id" yaml:"id"`

	// SchemaVersion API version of the object, optionally prefixed with an API group (e.g. "group.example.io/v1beta1" or bare "v1beta1").
	SchemaVersion core.VersionString `gorm:"-" db:"-" json:"schemaVersion" yaml:"schemaVersion"`

	// Name Environment name
	Name string `db:"name" json:"name" yaml:"name"`

	// Description Environment description
	Description string `db:"description" json:"description" yaml:"description"`

	// OrganizationId A Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
	OrganizationID core.Uuid `db:"organization_id" json:"organization_id" yaml:"organization_id"`

	// Owner A Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
	Owner *core.Uuid `db:"owner" json:"owner,omitempty" yaml:"owner"`

	// CreatedAt Timestamp when the resource was created.
	CreatedAt core.CreatedAt `db:"created_at" json:"created_at,omitempty" yaml:"created_at,omitempty"`

	// Metadata Additional metadata associated with the environment.
	Metadata core.Map `db:"metadata" json:"metadata,omitempty" yaml:"metadata"`

	// UpdatedAt Timestamp when the resource was updated.
	UpdatedAt core.UpdatedAt `db:"updated_at" json:"updated_at,omitempty" yaml:"updated_at,omitempty"`

	// DeletedAt SQL null Timestamp to handle null values of time.
	DeletedAt core.NullTime `db:"deleted_at" json:"deleted_at,omitempty" yaml:"deleted_at"`
}

// EnvironmentConnectionMapping defines model for EnvironmentConnectionMapping.
type EnvironmentConnectionMapping struct {
	// ConnectionId A Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
	ConnectionId *core.Uuid `db:"connection_id" json:"connection_id" yaml:"connection_id,omitempty"`
	CreatedAt    core.Time  `json:"created_at,omitempty" yaml:"created_at,omitempty"`

	// DeletedAt SQL null Timestamp to handle null values of time.
	DeletedAt core.NullTime `json:"deleted_at,omitempty" yaml:"deleted_at,omitempty"`

	// EnvironmentId A Universally Unique Identifier used to uniquely identify entities in Meshery. The UUID core definition is used across different schemas.
	EnvironmentId *core.Uuid     `db:"environment_id" json:"environment_id" yaml:"environment_id,omitempty"`
	ID            core.GeneralId `db:"id" json:"id" yaml:"id"`
	UpdatedAt     core.Time      `json:"updated_at,omitempty" yaml:"updated_at,omitempty"`
}

// EnvironmentConnectionsPage defines model for EnvironmentConnectionsPage.
type EnvironmentConnectionsPage struct {
	// Connections The connections of the environmentconnectionspage.
	Connections *[]map[string]interface{} `json:"connections,omitempty" yaml:"connections,omitempty"`

	// Page Current page number of the result set.
	Page *int `json:"page,omitempty" yaml:"page,omitempty"`

	// PageSize Number of items per page.
	PageSize *int `json:"page_size,omitempty" yaml:"page_size,omitempty"`

	// TotalCount Total number of items available.
	TotalCount *int `json:"total_count,omitempty" yaml:"total_count,omitempty"`
}

// EnvironmentPage defines model for EnvironmentPage.
type EnvironmentPage struct {
	// Environments Environments associated with this resource.
	Environments []Environment       `json:"environments,omitempty" yaml:"environments,omitempty"`
	Page         core.Number `json:"page,omitempty" yaml:"page,omitempty"`
	PageSize     core.Number `json:"page_size,omitempty" yaml:"page_size,omitempty"`
	TotalCount   core.Number `json:"total_count,omitempty" yaml:"total_count,omitempty"`
}

// EnvironmentPayload defines model for EnvironmentPayload.
type EnvironmentPayload struct {
	Description core.Text `json:"description,omitempty" yaml:"description,omitempty"`
	Name        core.Text `json:"name" yaml:"name"`

	// OrgId Select an organization in which you want to create this new environment. Keep in mind that the organization cannot be changed after creation.
	OrgId uuid.UUID `json:"organization_id" yaml:"organization_id"`
}

// EnvironmentId defines model for environmentId.
type EnvironmentId = core.Id

// Order defines model for order.
type Order = string

// OrgIdQuery defines model for orgIdQuery.
type OrgIdQuery = string

// Page defines model for page.
type Page = string

// Pagesize defines model for pagesize.
type Pagesize = string

// Search defines model for search.
type Search = string
