2
0
Files
gitcaddy-server/models/packages/package_defaults.go
logikonline 16b47f5362
Some checks failed
Build and Release / Create Release (push) Has been skipped
Build and Release / Unit Tests (push) Failing after 3m5s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 4m59s
Build and Release / Lint (push) Successful in 5m6s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Has been skipped
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Has been skipped
Build and Release / Build Binaries (amd64, darwin, macos) (push) Has been skipped
Build and Release / Build Binaries (arm64, darwin, macos) (push) Has been skipped
Build and Release / Build Binary (linux/arm64) (push) Has been skipped
feat(packages): add package defaults configuration for orgs
Add ability for organizations to preconfigure default package metadata (authors, company, copyright, icon) that AI tools can use when building packages. Includes database model, org settings UI with icon upload, MCP tool for retrieving defaults with repo-specific URLs, and localization strings.
2026-01-25 22:40:34 -05:00

57 lines
1.7 KiB
Go

// Copyright 2026 The GitCaddy Authors. All rights reserved.
// SPDX-License-Identifier: MIT
package packages
import (
"context"
"code.gitcaddy.com/server/v3/models/db"
)
func init() {
db.RegisterModel(new(PackageDefaults))
}
// PackageDefaults stores preconfigured package metadata defaults for an organization or user.
// These values are used by AI tools when building packages (e.g., NuGet .csproj metadata).
type PackageDefaults struct {
ID int64 `xorm:"pk autoincr"`
OwnerID int64 `xorm:"UNIQUE INDEX NOT NULL"`
Authors string `xorm:"TEXT"`
Company string `xorm:"VARCHAR(255)"`
Copyright string `xorm:"VARCHAR(512)"`
IconPath string `xorm:"VARCHAR(255)"` // relative path in avatar storage (package-icons/{ownerID})
}
// GetPackageDefaultsByOwnerID returns the package defaults for the given owner.
// Returns an empty PackageDefaults (with OwnerID set) if none exist yet.
func GetPackageDefaultsByOwnerID(ctx context.Context, ownerID int64) (*PackageDefaults, error) {
defaults := &PackageDefaults{OwnerID: ownerID}
has, err := db.GetEngine(ctx).Where("owner_id = ?", ownerID).Get(defaults)
if err != nil {
return nil, err
}
if !has {
return &PackageDefaults{OwnerID: ownerID}, nil
}
return defaults, nil
}
// CreateOrUpdatePackageDefaults creates or updates the package defaults for the given owner.
func CreateOrUpdatePackageDefaults(ctx context.Context, defaults *PackageDefaults) error {
existing := &PackageDefaults{}
has, err := db.GetEngine(ctx).Where("owner_id = ?", defaults.OwnerID).Get(existing)
if err != nil {
return err
}
if has {
defaults.ID = existing.ID
_, err = db.GetEngine(ctx).ID(defaults.ID).AllCols().Update(defaults)
} else {
_, err = db.GetEngine(ctx).Insert(defaults)
}
return err
}