From 3929493bfbd2f598a37643a3b6b0aa44ef0adc84 Mon Sep 17 00:00:00 2001 From: roboogg133 Date: Sat, 20 Sep 2025 19:31:38 -0300 Subject: [PATCH] enhance package database schema and configuration; add dependencies --- cmd/packets/main.go | 2 +- configs/main.go | 2 ++ configs/structs.go | 9 +++++---- doc/indexdbSchema.txt | 2 +- internal/consts/consts.go | 1 + internal/utils/utils.go | 22 ++++++++++++++++++++-- pkg/main.go | 3 ++- 7 files changed, 32 insertions(+), 9 deletions(-) diff --git a/cmd/packets/main.go b/cmd/packets/main.go index 6ef01fa..3096ff8 100644 --- a/cmd/packets/main.go +++ b/cmd/packets/main.go @@ -51,7 +51,7 @@ func init() { log.Fatal(db) } defer db.Close() - db.Exec("CREATE TABLE IF NOT EXISTS packages (name TEXT NOT NULL UNIQUE PRIMARY KEY, version TEXT NOT NULL, dependencies TEXT NOT NULL DEFAULT '', family TEXT NOT NULL, serial INTEGER, package_d TEXT NOT NULL)") + db.Exec("CREATE TABLE IF NOT EXISTS packages (query_name TEXT NOT NULL,name TEXT NOT NULL UNIQUE PRIMARY KEY, version TEXT NOT NULL, dependencies TEXT NOT NULL DEFAULT '', description TEXT NOT NULL, family TEXT NOT NULL, serial INTEGER NOT NULL UNIQUE, package_d TEXT NOT NULL, filename TEXT NOT NULL, os TEXT NOT NULL, arch TEXT NOT NULL, in_cache INTEGER NOT NULL DEFAULT 1, serial INTEGER NOT NULL, image_url TEXT NOT NULL)") } else { log.Fatal(err) } diff --git a/configs/main.go b/configs/main.go index 8a6d4c9..908fed5 100644 --- a/configs/main.go +++ b/configs/main.go @@ -36,6 +36,8 @@ func DefaultConfigTOML() (*ConfigTOML, error) { config.Config.Cache_d = consts.DefaultCache_d config.Config.Data_d = consts.DefaultData_d config.Config.HttpPort = consts.DefaultHttpPort + config.Config.Bin_d = consts.DefaultBin_d + config.Config.StorePackages = true return &config, nil } diff --git a/configs/structs.go b/configs/structs.go index d7d2948..4df3e1a 100644 --- a/configs/structs.go +++ b/configs/structs.go @@ -18,9 +18,10 @@ type Manifest struct { type ConfigTOML struct { Config struct { - HttpPort int `toml:"httpPort"` - Cache_d string `toml:"cache_d"` - Data_d string `toml:"data_d"` - Bin_d string `toml:"bin_d"` + HttpPort int `toml:"httpPort"` + Cache_d string `toml:"cache_d"` + Data_d string `toml:"data_d"` + Bin_d string `toml:"bin_d"` + StorePackages bool `toml:"store_packages"` } `toml:"Config"` } diff --git a/doc/indexdbSchema.txt b/doc/indexdbSchema.txt index f5bc8c3..c912802 100644 --- a/doc/indexdbSchema.txt +++ b/doc/indexdbSchema.txt @@ -1,6 +1,6 @@ CREATE TABLE packages( query_name TEXT NOT NULL, - image_url TEXT, + image_url TEXT NOT NULL, name TEXT NOT NULL UNIQUE PRIMARY KEY, version TEXT NOT NULL, public_key BLOB NOT NULL, diff --git a/internal/consts/consts.go b/internal/consts/consts.go index 6bd47bb..4b97523 100644 --- a/internal/consts/consts.go +++ b/internal/consts/consts.go @@ -6,6 +6,7 @@ const ( DefaultLinux_d = "/etc/packets" DefaultCache_d = "/var/cache/packets" DefaultHttpPort = 9123 + DefaultBin_d = "/usr/local/bin" DefaultData_d = "/opt/packets" LANDeadline = 2 * time.Second IndexDB = "/etc/packets/index.db" diff --git a/internal/utils/utils.go b/internal/utils/utils.go index ee646d4..36a45cd 100644 --- a/internal/utils/utils.go +++ b/internal/utils/utils.go @@ -29,6 +29,7 @@ type Package struct { Arch string Filename string Size int64 + Dependencies string Signature []byte PublicKey ed25519.PublicKey @@ -196,13 +197,30 @@ func (p *Package) Write() (string, error) { return filepath.Join(consts.DefaultCache_d, p.Filename), nil } -func (p *Package) AddToInstalledDB() error { +func (p *Package) AddToInstalledDB(inCache int, packagePath string) error { db, err := sql.Open("sqlite", consts.InstalledDB) if err != nil { return err } defer db.Close() - _, err = db.Exec("INSERT INTO packages (name, version, dependencies)") + _, err = db.Exec(` + INSERT INTO packages ( + query_name, name, version, dependencies, description, + family, serial, package_d, filename, os, arch, in_cache + ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, + p.QueryName, + p.Manifest.Info.Name, + p.Version, + p.Dependencies, + p.Description, + p.Family, + p.Serial, + packagePath, + p.Filename, + p.OS, + p.Arch, + inCache, + ) return err } diff --git a/pkg/main.go b/pkg/main.go index d917d9c..b158f0d 100644 --- a/pkg/main.go +++ b/pkg/main.go @@ -145,7 +145,7 @@ func GetPackage(name string) (utils.Package, error) { defer db.Close() var packageUrl string - err = db.QueryRow("SELECT query_name, version, package_url, image_url, description, author, author_verified, os, arch, signature, public_key, family, serial, size FROM packages WHERE name = ?", name). + err = db.QueryRow("SELECT query_name, version, package_url, image_url, description, author, author_verified, os, arch, signature, public_key, family, serial, size, dependencies FROM packages WHERE name = ?", name). Scan( &this.QueryName, &this.Version, @@ -161,6 +161,7 @@ func GetPackage(name string) (utils.Package, error) { &this.Family, &this.Serial, &this.Size, + &this.Dependencies, ) if err != nil { return utils.Package{}, err