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

package sqlcdb

import (
	"database/sql"
	"encoding/json"

	"github.com/google/uuid"
	"github.com/sqlc-dev/pqtype"
)

type DatabaseBackup struct {
	ID          string         `json:"id"`
	DatabaseID  string         `json:"database_id"`
	Size        string         `json:"size"`
	Status      string         `json:"status"`
	BackupPath  sql.NullString `json:"backup_path"`
	CreatedAt   sql.NullTime   `json:"created_at"`
	CompletedAt sql.NullTime   `json:"completed_at"`
}

type DatabaseService struct {
	ID            string         `json:"id"`
	UserID        string         `json:"user_id"`
	Name          string         `json:"name"`
	Type          string         `json:"type"`
	Status        string         `json:"status"`
	Version       string         `json:"version"`
	Plan          string         `json:"plan"`
	Region        string         `json:"region"`
	ConnectionUrl sql.NullString `json:"connection_url"`
	CreatedAt     sql.NullTime   `json:"created_at"`
	UpdatedAt     sql.NullTime   `json:"updated_at"`
}

type Deployment struct {
	ID        uuid.UUID      `json:"id"`
	ServiceID uuid.UUID      `json:"service_id"`
	Status    sql.NullString `json:"status"`
	CreatedAt sql.NullTime   `json:"created_at"`
	UpdatedAt sql.NullTime   `json:"updated_at"`
}

type Environment struct {
	ID        uuid.UUID    `json:"id"`
	Name      string       `json:"name"`
	ProjectID uuid.UUID    `json:"project_id"`
	CreatedAt sql.NullTime `json:"created_at"`
	UpdatedAt sql.NullTime `json:"updated_at"`
}

type EnvironmentVariable struct {
	ID        uuid.UUID    `json:"id"`
	ServiceID uuid.UUID    `json:"service_id"`
	Key       string       `json:"key"`
	Value     string       `json:"value"`
	IsSecret  sql.NullBool `json:"is_secret"`
	CreatedAt sql.NullTime `json:"created_at"`
	UpdatedAt sql.NullTime `json:"updated_at"`
}

type Project struct {
	ID          uuid.UUID      `json:"id"`
	Name        string         `json:"name"`
	Description sql.NullString `json:"description"`
	OwnerID     uuid.UUID      `json:"owner_id"`
	CreatedAt   sql.NullTime   `json:"created_at"`
	UpdatedAt   sql.NullTime   `json:"updated_at"`
}

type ProjectMember struct {
	ID        uuid.UUID    `json:"id"`
	ProjectID uuid.UUID    `json:"project_id"`
	UserID    uuid.UUID    `json:"user_id"`
	Role      string       `json:"role"`
	CreatedAt sql.NullTime `json:"created_at"`
}

type Service struct {
	ID          uuid.UUID      `json:"id"`
	ProjectID   uuid.UUID      `json:"project_id"`
	Name        string         `json:"name"`
	Type        string         `json:"type"`
	Status      string         `json:"status"`
	Image       sql.NullString `json:"image"`
	Command     sql.NullString `json:"command"`
	Environment sql.NullString `json:"environment"`
	Cpu         sql.NullString `json:"cpu"`
	Memory      sql.NullString `json:"memory"`
	CreatedAt   sql.NullTime   `json:"created_at"`
	UpdatedAt   sql.NullTime   `json:"updated_at"`
}

type ServiceTemplate struct {
	ID          string                `json:"id"`
	Name        string                `json:"name"`
	Description sql.NullString        `json:"description"`
	Category    string                `json:"category"`
	Logo        sql.NullString        `json:"logo"`
	Config      json.RawMessage       `json:"config"`
	Variables   pqtype.NullRawMessage `json:"variables"`
	IsOfficial  sql.NullBool          `json:"is_official"`
	CreatedAt   sql.NullTime          `json:"created_at"`
	UpdatedAt   sql.NullTime          `json:"updated_at"`
}
