feat: auto-discover container images from registries

- Add ListImages() to registry interface, implement for Gitea
- Add owner field to registry config (needed for Gitea packages API)
- GET /api/registries/:id/images endpoint
- "Browse Images" button on Projects and Quick Deploy pages
- Image dropdown with registry grouping and search
- i18n support (EN/RU) for all new UI strings
This commit is contained in:
2026-03-28 14:04:11 +03:00
parent 77251c540b
commit 37e251da85
12 changed files with 355 additions and 18 deletions
+4 -4
View File
@@ -60,7 +60,7 @@ func (s *Store) GetRegistryByName(name string) (Registry, error) {
// GetAllRegistries returns every registry ordered by name.
func (s *Store) GetAllRegistries() ([]Registry, error) {
rows, err := s.db.Query(
`SELECT id, name, url, type, token, created_at, updated_at
`SELECT id, name, url, type, token, owner, created_at, updated_at
FROM registries ORDER BY name`,
)
if err != nil {
@@ -71,7 +71,7 @@ func (s *Store) GetAllRegistries() ([]Registry, error) {
var registries []Registry
for rows.Next() {
var r Registry
if err := rows.Scan(&r.ID, &r.Name, &r.URL, &r.Type, &r.Token, &r.CreatedAt, &r.UpdatedAt); err != nil {
if err := rows.Scan(&r.ID, &r.Name, &r.URL, &r.Type, &r.Token, &r.Owner, &r.CreatedAt, &r.UpdatedAt); err != nil {
return nil, fmt.Errorf("scan registry: %w", err)
}
registries = append(registries, r)
@@ -83,9 +83,9 @@ func (s *Store) GetAllRegistries() ([]Registry, error) {
func (s *Store) UpdateRegistry(r Registry) error {
r.UpdatedAt = now()
result, err := s.db.Exec(
`UPDATE registries SET name=?, url=?, type=?, token=?, updated_at=?
`UPDATE registries SET name=?, url=?, type=?, token=?, owner=?, updated_at=?
WHERE id=?`,
r.Name, r.URL, r.Type, r.Token, r.UpdatedAt, r.ID,
r.Name, r.URL, r.Type, r.Token, r.Owner, r.UpdatedAt, r.ID,
)
if err != nil {
return fmt.Errorf("update registry: %w", err)