Feat settings cascade (#3)
Some checks failed
CI/CD / detect-changes (push) Successful in 3s
CI/CD / test-frontend (push) Successful in 5s
CI/CD / test-go-pg (push) Failing after 2m24s
CI/CD / test-sqlite (push) Successful in 2m48s
CI/CD / build-and-deploy (push) Has been skipped

Co-authored-by: Jeffrey Smith <jasafpro@gmail.com>
Co-committed-by: Jeffrey Smith <jasafpro@gmail.com>
This commit was merged in pull request #3.
This commit is contained in:
2026-03-26 18:03:44 +00:00
committed by xcaliber
parent a830ae3684
commit a36be83aaf
15 changed files with 690 additions and 49 deletions

View File

@@ -367,6 +367,36 @@ func (s *PackageStore) SetPackageSettings(ctx context.Context, id string, settin
return nil
}
// ── Team-level settings (v0.2.0) ─────────────────
func (s *PackageStore) GetTeamSettings(ctx context.Context, pkgID, teamID string) (json.RawMessage, error) {
var settings []byte
err := DB.QueryRowContext(ctx,
`SELECT settings FROM package_team_settings WHERE package_id = $1 AND team_id = $2`,
pkgID, teamID).Scan(&settings)
if err != nil {
return nil, err
}
return json.RawMessage(settings), nil
}
func (s *PackageStore) SetTeamSettings(ctx context.Context, pkgID, teamID string, settings json.RawMessage) error {
_, err := DB.ExecContext(ctx, `
INSERT INTO package_team_settings (package_id, team_id, settings, updated_at)
VALUES ($1, $2, $3, NOW())
ON CONFLICT (package_id, team_id)
DO UPDATE SET settings = EXCLUDED.settings, updated_at = NOW()`,
pkgID, teamID, []byte(settings))
return err
}
func (s *PackageStore) DeleteTeamSettings(ctx context.Context, pkgID, teamID string) error {
_, err := DB.ExecContext(ctx,
`DELETE FROM package_team_settings WHERE package_id = $1 AND team_id = $2`,
pkgID, teamID)
return err
}
// nullStrPtr converts *string to sql.NullString for nullable FK columns.
func nullStrPtr(s *string) sql.NullString {
if s == nil {