Documentation
¶
Index ¶
- func DeployDatabasePackage(w http.ResponseWriter, r *http.Request)
- func DeployDocumentPackage(w http.ResponseWriter, r *http.Request)
- func PackageDatabase(w http.ResponseWriter, r *http.Request)
- func PackageDevOpsObjects(w http.ResponseWriter, r *http.Request)
- func PackageDocuments(w http.ResponseWriter, r *http.Request)
- func UploadPackage(w http.ResponseWriter, r *http.Request)
- func VersionControl(w http.ResponseWriter, r *http.Request)
- type AnalyzeRequest
- type CreatePackageRequest
- type DeployFromDataRequest
- type DeployPackageRequest
- type GeneratePackageRequest
- type ImportPackageRequest
- type PackageController
- func (pc *PackageController) AnalyzeSource(c *gin.Context)
- func (pc *PackageController) CreatePackage(c *gin.Context)
- func (pc *PackageController) DeletePackage(c *gin.Context)
- func (pc *PackageController) DeployPackage(c *gin.Context)
- func (pc *PackageController) GeneratePackageFile(c *gin.Context)
- func (pc *PackageController) GetCollectionDocuments(c *gin.Context)
- func (pc *PackageController) GetDeployment(c *gin.Context)
- func (pc *PackageController) GetJobStatus(c *gin.Context)
- func (pc *PackageController) GetPackage(c *gin.Context)
- func (pc *PackageController) GetPackageActions(c *gin.Context)
- func (pc *PackageController) GetSources(c *gin.Context)
- func (pc *PackageController) GetTableRecords(c *gin.Context)
- func (pc *PackageController) ImportPackage(c *gin.Context)
- func (pc *PackageController) ImportPackageFile(c *gin.Context)
- func (pc *PackageController) ListDeployments(c *gin.Context)
- func (pc *PackageController) ListPackages(c *gin.Context)
- func (pc *PackageController) PushPackage(c *gin.Context)
- func (pc *PackageController) UpdatePackage(c *gin.Context)
- type PackageDatabaseRequest
- type PackageDefinitionController
- func (pdc *PackageDefinitionController) CreateDefinition(c *gin.Context)
- func (pdc *PackageDefinitionController) DeleteDefinition(c *gin.Context)
- func (pdc *PackageDefinitionController) GetDefinition(c *gin.Context)
- func (pdc *PackageDefinitionController) ListBuilds(c *gin.Context)
- func (pdc *PackageDefinitionController) ListDefinitions(c *gin.Context)
- func (pdc *PackageDefinitionController) PackFromDefinition(c *gin.Context)
- func (pdc *PackageDefinitionController) UpdateDefinition(c *gin.Context)
- type PackageDocumentRequest
- type PushPackageRequest
- type UpdatePackageRequest
- type VersionControlRequest
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