deployment

package
v0.0.0-...-99e730b Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 13, 2026 License: MIT Imports: 27 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DeployDatabasePackage

func DeployDatabasePackage(w http.ResponseWriter, r *http.Request)

DeployDatabasePackage deploys a database package

func DeployDocumentPackage

func DeployDocumentPackage(w http.ResponseWriter, r *http.Request)

DeployDocumentPackage deploys a document package

func PackageDatabase

func PackageDatabase(w http.ResponseWriter, r *http.Request)

PackageDatabase packages database tables

func PackageDevOpsObjects

func PackageDevOpsObjects(w http.ResponseWriter, r *http.Request)

PackageDevOpsObjects packages specific DevOps objects

func PackageDocuments

func PackageDocuments(w http.ResponseWriter, r *http.Request)

PackageDocuments packages document collections

func UploadPackage

func UploadPackage(w http.ResponseWriter, r *http.Request)

UploadPackage handles package file uploads

func VersionControl

func VersionControl(w http.ResponseWriter, r *http.Request)

VersionControl handles version control operations

Types

type AnalyzeRequest

type AnalyzeRequest struct {
	PackageType string   `json:"package_type" binding:"required"` // "database" or "document"
	Tables      []string `json:"tables,omitempty"`
	Collections []string `json:"collections,omitempty"`
}

AnalyzeRequest contains tables/collections to analyze before packaging

type CreatePackageRequest

type CreatePackageRequest struct {
	Name          string                 `json:"name" binding:"required"`
	Version       string                 `json:"version" binding:"required"`
	Description   string                 `json:"description"`
	PackageType   string                 `json:"package_type" binding:"required"` // "database" or "document"
	Environment   string                 `json:"environment"`                     // dev, staging, production
	Filter        models.PackageFilter   `json:"filter"`
	Metadata      map[string]interface{} `json:"metadata"`
	IncludeParent bool                   `json:"include_parent"`
}

CreatePackageRequest represents a request to create a package definition

type DeployFromDataRequest

type DeployFromDataRequest struct {
	PackageData json.RawMessage          `json:"package_data"`
	Options     models.DeploymentOptions `json:"options"`
}

DeployFromDataRequest represents a deployment request using raw package data

type DeployPackageRequest

type DeployPackageRequest struct {
	PackageID          string                   `json:"package_id"`
	Environment        string                   `json:"environment"`
	Options            models.DeploymentOptions `json:"options"`
	ScheduleAt         *time.Time               `json:"schedule_at"`       // Optional: Schedule for later
	RunAsBackgroundJob bool                     `json:"run_as_background"` // Run as background job
}

DeployPackageRequest represents a deployment request

type GeneratePackageRequest

type GeneratePackageRequest struct {
	Tables      []string          `json:"tables"`       // For database packages
	Collections []string          `json:"collections"`  // For document packages
	WhereClause map[string]string `json:"where_clause"` // Table/Collection -> WHERE condition
	Format      string            `json:"format"`       // "json" or "zip"
}

GeneratePackageRequest represents a request to generate a package file

type ImportPackageRequest

type ImportPackageRequest struct {
	PackageData json.RawMessage `json:"package_data" binding:"required"`
	Environment string          `json:"environment"`
}

ImportPackageRequest represents an import request

type PackageController

type PackageController struct{}

PackageController handles package management operations

func (*PackageController) AnalyzeSource

func (pc *PackageController) AnalyzeSource(c *gin.Context)

AnalyzeSource godoc @Summary Analyze tables or collections before packaging @Description Returns schema, FK relationships, and global-key candidates to help configure a package @Tags packages @Accept json @Produce json @Param request body AnalyzeRequest true "Analyze request" @Success 200 {object} models.AnalysisResult @Failure 400 {object} map[string]interface{} @Failure 500 {object} map[string]interface{} @Router /api/packages/analyze [post]

func (*PackageController) CreatePackage

func (pc *PackageController) CreatePackage(c *gin.Context)

CreatePackage godoc @Summary Create a new package definition @Description Create a new package definition with specified tables/collections @Tags packages @Accept json @Produce json @Param request body CreatePackageRequest true "Package creation request" @Success 201 {object} repository.PackageRecord @Failure 400 {object} map[string]interface{} @Failure 500 {object} map[string]interface{} @Router /api/packages [post]

func (*PackageController) DeletePackage

func (pc *PackageController) DeletePackage(c *gin.Context)

DeletePackage godoc @Summary Delete package (soft delete) @Description Soft delete a package by setting active = false @Tags packages @Accept json @Produce json @Param id path string true "Package ID" @Success 200 {object} map[string]interface{} @Failure 500 {object} map[string]interface{} @Router /api/packages/{id} [delete]

func (*PackageController) DeployPackage

func (pc *PackageController) DeployPackage(c *gin.Context)

DeployPackage godoc @Summary Deploy a package @Description Deploy a package to the target environment @Tags packages @Accept json @Produce json @Param id path string true "Package ID" @Param request body DeployPackageRequest true "Deployment request" @Success 200 {object} map[string]interface{} @Failure 400 {object} map[string]interface{} @Failure 500 {object} map[string]interface{} @Router /api/packages/{id}/deploy [post]

func (*PackageController) GeneratePackageFile

func (pc *PackageController) GeneratePackageFile(c *gin.Context)

GeneratePackageFile godoc @Summary Generate package file @Description Generate a package file (JSON or ZIP) with selected data @Tags packages @Accept json @Produce application/zip @Param id path string true "Package ID" @Param request body GeneratePackageRequest true "Package generation request" @Success 200 {file} application/zip @Failure 400 {object} map[string]interface{} @Failure 500 {object} map[string]interface{} @Router /api/packages/{id}/generate [post]

func (*PackageController) GetCollectionDocuments

func (pc *PackageController) GetCollectionDocuments(c *gin.Context)

GetCollectionDocuments godoc @Summary Browse documents in a MongoDB collection @Description Returns paginated documents from the specified collection — used by the record picker @Tags packages @Produce json @Param collection path string true "Collection name" @Param limit query int false "Documents per page" default(50) @Param offset query int false "Document offset" default(0) @Success 200 {object} models.CollectionDocumentsResponse @Failure 400 {object} map[string]interface{} @Failure 500 {object} map[string]interface{} @Router /api/packages/sources/{collection}/documents [get]

func (*PackageController) GetDeployment

func (pc *PackageController) GetDeployment(c *gin.Context)

GetDeployment godoc @Summary Get deployment details @Description Get detailed information about a specific deployment @Tags deployments @Accept json @Produce json @Param id path string true "Deployment ID" @Success 200 {object} map[string]interface{} @Failure 404 {object} map[string]interface{} @Failure 500 {object} map[string]interface{} @Router /api/deployments/{id} [get]

func (*PackageController) GetJobStatus

func (pc *PackageController) GetJobStatus(c *gin.Context)

GetJobStatus godoc @Summary Get background job status @Description Get status and details of a background deployment job @Tags jobs @Accept json @Produce json @Param id path string true "Job ID" @Success 200 {object} map[string]interface{} @Failure 404 {object} map[string]interface{} @Failure 500 {object} map[string]interface{} @Router /api/jobs/{id} [get]

func (*PackageController) GetPackage

func (pc *PackageController) GetPackage(c *gin.Context)

GetPackage godoc @Summary Get package by ID @Description Get detailed information about a specific package @Tags packages @Accept json @Produce json @Param id path string true "Package ID" @Success 200 {object} models.Package @Failure 404 {object} map[string]interface{} @Failure 500 {object} map[string]interface{} @Router /api/packages/{id} [get]

func (*PackageController) GetPackageActions

func (pc *PackageController) GetPackageActions(c *gin.Context)

GetPackageActions godoc @Summary Get package action history @Description Get all actions (pack, deploy, rollback) for a package @Tags packages @Accept json @Produce json @Param id path string true "Package ID" @Param limit query int false "Limit results" default(50) @Success 200 {array} repository.PackageActionRecord @Failure 500 {object} map[string]interface{} @Router /api/packages/{id}/actions [get]

func (*PackageController) GetSources

func (pc *PackageController) GetSources(c *gin.Context)

GetSources godoc @Summary List available tables and MongoDB collections @Description Returns all tables (with schema) from the connected SQL database and all

collections from MongoDB, so the user can browse and select what to package.

@Tags packages @Produce json @Success 200 {object} models.SourcesResponse @Failure 500 {object} map[string]interface{} @Router /api/packages/sources [get]

func (*PackageController) GetTableRecords

func (pc *PackageController) GetTableRecords(c *gin.Context)

GetTableRecords godoc @Summary Browse rows in a SQL table @Description Returns paginated rows from the specified table — used by the record picker @Tags packages @Produce json @Param table path string true "Table name" @Param limit query int false "Rows per page" default(50) @Param offset query int false "Row offset" default(0) @Success 200 {object} models.TableRecordsResponse @Failure 400 {object} map[string]interface{} @Failure 500 {object} map[string]interface{} @Router /api/packages/sources/{table}/records [get]

func (*PackageController) ImportPackage

func (pc *PackageController) ImportPackage(c *gin.Context)

ImportPackage godoc @Summary Import a package @Description Import a package from JSON data and save it to the database @Tags packages @Accept json @Produce json @Param request body ImportPackageRequest true "Package import request" @Success 200 {object} map[string]interface{} @Failure 400 {object} map[string]interface{} @Failure 500 {object} map[string]interface{} @Router /api/packages/import [post]

func (*PackageController) ImportPackageFile

func (pc *PackageController) ImportPackageFile(c *gin.Context)

ImportPackageFile godoc @Summary Import a package from an uploaded file (JSON or ZIP) @Description Accepts a multipart upload of a package JSON or ZIP file and imports it. @Tags packages @Accept multipart/form-data @Produce json @Param file formData file true "Package file (.json or .zip)" @Param environment formData string false "Target environment" @Success 200 {object} map[string]interface{} @Failure 400 {object} map[string]interface{} @Failure 500 {object} map[string]interface{} @Router /api/packages/import-file [post]

func (*PackageController) ListDeployments

func (pc *PackageController) ListDeployments(c *gin.Context)

ListDeployments godoc @Summary List all deployments @Description Get a list of all package deployments with optional filters @Tags deployments @Accept json @Produce json @Param environment query string false "Environment filter" @Param is_active query bool false "Active status filter" @Param limit query int false "Limit results" default(50) @Param offset query int false "Offset for pagination" default(0) @Success 200 {array} repository.PackageDeployment @Failure 500 {object} map[string]interface{} @Router /api/deployments [get]

func (*PackageController) ListPackages

func (pc *PackageController) ListPackages(c *gin.Context)

ListPackages godoc @Summary List all packages @Description Get a list of all packages with optional filters @Tags packages @Accept json @Produce json @Param package_type query string false "Package type filter (database/document)" @Param environment query string false "Environment filter (dev/staging/production)" @Param status query string false "Status filter (active/archived/deleted)" @Param limit query int false "Limit results" default(50) @Param offset query int false "Offset for pagination" default(0) @Success 200 {array} repository.PackageRecord @Failure 500 {object} map[string]interface{} @Router /api/packages [get]

func (*PackageController) PushPackage

func (pc *PackageController) PushPackage(c *gin.Context)

PushPackage godoc @Summary Push a package to another IAC environment @Description Exports the package as JSON and imports it into the target IAC instance via its REST API @Tags packages @Accept json @Produce json @Param id path string true "Package ID" @Success 200 {object} map[string]interface{} @Failure 400 {object} map[string]interface{} @Failure 500 {object} map[string]interface{} @Router /api/packages/{id}/push [post]

func (*PackageController) UpdatePackage

func (pc *PackageController) UpdatePackage(c *gin.Context)

UpdatePackage godoc @Summary Update package metadata @Description Update package description, status, tags, and metadata @Tags packages @Accept json @Produce json @Param id path string true "Package ID" @Param request body UpdatePackageRequest true "Package update request" @Success 200 {object} map[string]interface{} @Failure 400 {object} map[string]interface{} @Failure 500 {object} map[string]interface{} @Router /api/packages/{id} [put]

type PackageDatabaseRequest

type PackageDatabaseRequest struct {
	Name        string               `json:"name"`
	Version     string               `json:"version"`
	Description string               `json:"description"`
	Environment string               `json:"environment"` // dev, staging, production
	Filter      models.PackageFilter `json:"filter"`
}

PackageDatabaseRequest represents a database packaging request

type PackageDefinitionController

type PackageDefinitionController struct{}

PackageDefinitionController handles CRUD for reusable package definitions. Dual persistence: SQL (iacpackagedefs) stores stable metadata + version number; MongoDB (package_definitions) stores the full config per definition.

func (*PackageDefinitionController) CreateDefinition

func (pdc *PackageDefinitionController) CreateDefinition(c *gin.Context)

CreateDefinition godoc @Summary Create a new package definition (SQL + MongoDB) @Router /api/package-definitions [post]

func (*PackageDefinitionController) DeleteDefinition

func (pdc *PackageDefinitionController) DeleteDefinition(c *gin.Context)

DeleteDefinition godoc @Summary Soft-delete a package definition @Router /api/package-definitions/:id [delete]

func (*PackageDefinitionController) GetDefinition

func (pdc *PackageDefinitionController) GetDefinition(c *gin.Context)

GetDefinition godoc @Summary Get a package definition by ID @Router /api/package-definitions/:id [get]

func (*PackageDefinitionController) ListBuilds

func (pdc *PackageDefinitionController) ListBuilds(c *gin.Context)

ListBuilds godoc @Summary List build history for a package definition @Router /api/package-definitions/:id/builds [get]

func (*PackageDefinitionController) ListDefinitions

func (pdc *PackageDefinitionController) ListDefinitions(c *gin.Context)

ListDefinitions godoc @Summary List all active package definitions @Router /api/package-definitions [get]

func (*PackageDefinitionController) PackFromDefinition

func (pdc *PackageDefinitionController) PackFromDefinition(c *gin.Context)

PackFromDefinition godoc @Summary Trigger packaging from a saved definition; tracks build number in SQL @Router /api/package-definitions/:id/pack [post]

func (*PackageDefinitionController) UpdateDefinition

func (pdc *PackageDefinitionController) UpdateDefinition(c *gin.Context)

UpdateDefinition godoc @Summary Update a package definition — increments version_number in MongoDB and SQL @Router /api/package-definitions/:id [put]

type PackageDocumentRequest

type PackageDocumentRequest struct {
	Name        string               `json:"name"`
	Version     string               `json:"version"`
	Description string               `json:"description"`
	Environment string               `json:"environment"` // dev, staging, production
	Filter      models.PackageFilter `json:"filter"`
}

PackageDocumentRequest represents a document packaging request

type PushPackageRequest

type PushPackageRequest struct {
	TargetURL   string `json:"target_url" binding:"required"` // e.g. https://remote.iac.example.com
	APIKey      string `json:"api_key"`                       // Bearer token for target IAC
	Environment string `json:"environment"`                   // override environment on import
}

PushPackageRequest is the body for POST /api/packages/:id/push

type UpdatePackageRequest

type UpdatePackageRequest struct {
	Description string                 `json:"description"`
	Status      string                 `json:"status"`
	Tags        []string               `json:"tags"`
	Metadata    map[string]interface{} `json:"metadata"`
}

UpdatePackageRequest represents a request to update package metadata

type VersionControlRequest

type VersionControlRequest struct {
	Action        string                 `json:"action"` // "commit", "branch", "merge", "tag", "revert"
	ObjectType    string                 `json:"object_type"`
	ObjectID      string                 `json:"object_id"`
	Content       map[string]interface{} `json:"content,omitempty"`
	CommitMessage string                 `json:"commit_message,omitempty"`
	Branch        string                 `json:"branch,omitempty"`
	SourceBranch  string                 `json:"source_branch,omitempty"`
	TargetBranch  string                 `json:"target_branch,omitempty"`
	Tags          []string               `json:"tags,omitempty"`
	VersionID     string                 `json:"version_id,omitempty"`
}

VersionControlRequest represents a version control request

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL