refactor: keep only one struct for package
This commit is contained in:
@ -28,32 +28,11 @@ import (
|
||||
"xorm.io/xorm"
|
||||
|
||||
"gitea.plemya-x.ru/Plemya-x/ALR/internal/config"
|
||||
"gitea.plemya-x.ru/Plemya-x/ALR/pkg/alrsh"
|
||||
)
|
||||
|
||||
const CurrentVersion = 5
|
||||
|
||||
type Package struct {
|
||||
BasePkgName string `sh:"basepkg_name" xorm:"notnull 'basepkg_name'"`
|
||||
Name string `sh:"name,required" xorm:"notnull unique(name_repo) 'name'"`
|
||||
Version string `sh:"version,required" xorm:"notnull 'version'"`
|
||||
Release int `sh:"release" xorm:"notnull 'release'"`
|
||||
Epoch uint `sh:"epoch" xorm:"'epoch'"`
|
||||
Summary map[string]string `xorm:"json 'summary'"`
|
||||
Description map[string]string `xorm:"json 'description'"`
|
||||
Group map[string]string `xorm:"json 'group_name'"`
|
||||
Homepage map[string]string `xorm:"json 'homepage'"`
|
||||
Maintainer map[string]string `xorm:"json 'maintainer'"`
|
||||
Architectures []string `sh:"architectures" xorm:"json 'architectures'"`
|
||||
Licenses []string `sh:"license" xorm:"json 'licenses'"`
|
||||
Provides []string `sh:"provides" xorm:"json 'provides'"`
|
||||
Conflicts []string `sh:"conflicts" xorm:"json 'conflicts'"`
|
||||
Replaces []string `sh:"replaces" xorm:"json 'replaces'"`
|
||||
Depends map[string][]string `xorm:"json 'depends'"`
|
||||
BuildDepends map[string][]string `xorm:"json 'builddepends'"`
|
||||
OptDepends map[string][]string `xorm:"json 'optdepends'"`
|
||||
Repository string `xorm:"notnull unique(name_repo) 'repository'"`
|
||||
}
|
||||
|
||||
type Version struct {
|
||||
Version int `xorm:"'version'"`
|
||||
}
|
||||
@ -76,6 +55,8 @@ func New(config Config) *Database {
|
||||
func (d *Database) Connect() error {
|
||||
dsn := d.config.GetPaths().DBPath
|
||||
engine, err := xorm.NewEngine("sqlite", dsn)
|
||||
// engine.SetLogLevel(log.LOG_DEBUG)
|
||||
// engine.ShowSQL(true)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -87,7 +68,7 @@ func (d *Database) Init(ctx context.Context) error {
|
||||
if err := d.Connect(); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := d.engine.Sync2(new(Package), new(Version)); err != nil {
|
||||
if err := d.engine.Sync2(new(alrsh.Package), new(Version)); err != nil {
|
||||
return err
|
||||
}
|
||||
ver, ok := d.GetVersion(ctx)
|
||||
@ -119,10 +100,10 @@ func (d *Database) addVersion(ver int) error {
|
||||
}
|
||||
|
||||
func (d *Database) reset() error {
|
||||
return d.engine.DropTables(new(Package), new(Version))
|
||||
return d.engine.DropTables(new(alrsh.Package), new(Version))
|
||||
}
|
||||
|
||||
func (d *Database) InsertPackage(ctx context.Context, pkg Package) error {
|
||||
func (d *Database) InsertPackage(ctx context.Context, pkg alrsh.Package) error {
|
||||
session := d.engine.Context(ctx)
|
||||
|
||||
affected, err := session.Where("name = ? AND repository = ?", pkg.Name, pkg.Repository).Update(&pkg)
|
||||
@ -140,14 +121,14 @@ func (d *Database) InsertPackage(ctx context.Context, pkg Package) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (d *Database) GetPkgs(_ context.Context, where string, args ...any) ([]Package, error) {
|
||||
var pkgs []Package
|
||||
func (d *Database) GetPkgs(_ context.Context, where string, args ...any) ([]alrsh.Package, error) {
|
||||
var pkgs []alrsh.Package
|
||||
err := d.engine.Where(where, args...).Find(&pkgs)
|
||||
return pkgs, err
|
||||
}
|
||||
|
||||
func (d *Database) GetPkg(where string, args ...any) (*Package, error) {
|
||||
var pkg Package
|
||||
func (d *Database) GetPkg(where string, args ...any) (*alrsh.Package, error) {
|
||||
var pkg alrsh.Package
|
||||
has, err := d.engine.Where(where, args...).Get(&pkg)
|
||||
if err != nil || !has {
|
||||
return nil, err
|
||||
@ -156,12 +137,12 @@ func (d *Database) GetPkg(where string, args ...any) (*Package, error) {
|
||||
}
|
||||
|
||||
func (d *Database) DeletePkgs(_ context.Context, where string, args ...any) error {
|
||||
_, err := d.engine.Where(where, args...).Delete(&Package{})
|
||||
_, err := d.engine.Where(where, args...).Delete(&alrsh.Package{})
|
||||
return err
|
||||
}
|
||||
|
||||
func (d *Database) IsEmpty() bool {
|
||||
count, err := d.engine.Count(new(Package))
|
||||
count, err := d.engine.Count(new(alrsh.Package))
|
||||
return err != nil || count == 0
|
||||
}
|
||||
|
||||
|
@ -25,8 +25,11 @@ import (
|
||||
"strings"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
||||
"gitea.plemya-x.ru/Plemya-x/ALR/internal/config"
|
||||
"gitea.plemya-x.ru/Plemya-x/ALR/internal/db"
|
||||
"gitea.plemya-x.ru/Plemya-x/ALR/pkg/alrsh"
|
||||
)
|
||||
|
||||
type TestALRConfig struct{}
|
||||
@ -43,35 +46,38 @@ func prepareDb() *db.Database {
|
||||
return database
|
||||
}
|
||||
|
||||
var testPkg = db.Package{
|
||||
var testPkg = alrsh.Package{
|
||||
Name: "test",
|
||||
Version: "0.0.1",
|
||||
Release: 1,
|
||||
Epoch: 2,
|
||||
Description: map[string]string{
|
||||
Description: alrsh.OverridableFromMap(map[string]string{
|
||||
"en": "Test package",
|
||||
"ru": "Проверочный пакет",
|
||||
},
|
||||
Homepage: map[string]string{
|
||||
}),
|
||||
Homepage: alrsh.OverridableFromMap(map[string]string{
|
||||
"en": "https://gitea.plemya-x.ru/xpamych/ALR",
|
||||
},
|
||||
Maintainer: map[string]string{
|
||||
}),
|
||||
Maintainer: alrsh.OverridableFromMap(map[string]string{
|
||||
"en": "Evgeniy Khramov <xpamych@yandex.ru>",
|
||||
"ru": "Евгений Храмов <xpamych@yandex.ru>",
|
||||
},
|
||||
}),
|
||||
Architectures: []string{"arm64", "amd64"},
|
||||
Licenses: []string{"GPL-3.0-or-later"},
|
||||
Provides: []string{"test"},
|
||||
Conflicts: []string{"test"},
|
||||
Replaces: []string{"test-old"},
|
||||
Depends: map[string][]string{
|
||||
Depends: alrsh.OverridableFromMap(map[string][]string{
|
||||
"": {"sudo"},
|
||||
},
|
||||
BuildDepends: map[string][]string{
|
||||
}),
|
||||
BuildDepends: alrsh.OverridableFromMap(map[string][]string{
|
||||
"": {"golang"},
|
||||
"arch": {"go"},
|
||||
},
|
||||
}),
|
||||
Repository: "default",
|
||||
Summary: alrsh.OverridableFromMap(map[string]string{}),
|
||||
Group: alrsh.OverridableFromMap(map[string]string{}),
|
||||
OptDepends: alrsh.OverridableFromMap(map[string][]string{}),
|
||||
}
|
||||
|
||||
func TestInit(t *testing.T) {
|
||||
@ -106,9 +112,7 @@ func TestInsertPackage(t *testing.T) {
|
||||
t.Fatalf("Expected 1 package, got %d", len(pkgs))
|
||||
}
|
||||
|
||||
if !reflect.DeepEqual(testPkg, pkgs[0]) {
|
||||
t.Errorf("Expected test package to be the same as database package")
|
||||
}
|
||||
assert.Equal(t, testPkg, pkgs[0])
|
||||
}
|
||||
|
||||
func TestGetPkgs(t *testing.T) {
|
||||
|
Reference in New Issue
Block a user