enhance package database schema and configuration; add dependencies

This commit is contained in:
2025-09-20 19:31:38 -03:00
parent 2620ec00ab
commit 3929493bfb
7 changed files with 32 additions and 9 deletions

View File

@@ -51,7 +51,7 @@ func init() {
log.Fatal(db) log.Fatal(db)
} }
defer db.Close() 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 { } else {
log.Fatal(err) log.Fatal(err)
} }

View File

@@ -36,6 +36,8 @@ func DefaultConfigTOML() (*ConfigTOML, error) {
config.Config.Cache_d = consts.DefaultCache_d config.Config.Cache_d = consts.DefaultCache_d
config.Config.Data_d = consts.DefaultData_d config.Config.Data_d = consts.DefaultData_d
config.Config.HttpPort = consts.DefaultHttpPort config.Config.HttpPort = consts.DefaultHttpPort
config.Config.Bin_d = consts.DefaultBin_d
config.Config.StorePackages = true
return &config, nil return &config, nil
} }

View File

@@ -18,9 +18,10 @@ type Manifest struct {
type ConfigTOML struct { type ConfigTOML struct {
Config struct { Config struct {
HttpPort int `toml:"httpPort"` HttpPort int `toml:"httpPort"`
Cache_d string `toml:"cache_d"` Cache_d string `toml:"cache_d"`
Data_d string `toml:"data_d"` Data_d string `toml:"data_d"`
Bin_d string `toml:"bin_d"` Bin_d string `toml:"bin_d"`
StorePackages bool `toml:"store_packages"`
} `toml:"Config"` } `toml:"Config"`
} }

View File

@@ -1,6 +1,6 @@
CREATE TABLE packages( CREATE TABLE packages(
query_name TEXT NOT NULL, query_name TEXT NOT NULL,
image_url TEXT, image_url TEXT NOT NULL,
name TEXT NOT NULL UNIQUE PRIMARY KEY, name TEXT NOT NULL UNIQUE PRIMARY KEY,
version TEXT NOT NULL, version TEXT NOT NULL,
public_key BLOB NOT NULL, public_key BLOB NOT NULL,

View File

@@ -6,6 +6,7 @@ const (
DefaultLinux_d = "/etc/packets" DefaultLinux_d = "/etc/packets"
DefaultCache_d = "/var/cache/packets" DefaultCache_d = "/var/cache/packets"
DefaultHttpPort = 9123 DefaultHttpPort = 9123
DefaultBin_d = "/usr/local/bin"
DefaultData_d = "/opt/packets" DefaultData_d = "/opt/packets"
LANDeadline = 2 * time.Second LANDeadline = 2 * time.Second
IndexDB = "/etc/packets/index.db" IndexDB = "/etc/packets/index.db"

View File

@@ -29,6 +29,7 @@ type Package struct {
Arch string Arch string
Filename string Filename string
Size int64 Size int64
Dependencies string
Signature []byte Signature []byte
PublicKey ed25519.PublicKey PublicKey ed25519.PublicKey
@@ -196,13 +197,30 @@ func (p *Package) Write() (string, error) {
return filepath.Join(consts.DefaultCache_d, p.Filename), nil 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) db, err := sql.Open("sqlite", consts.InstalledDB)
if err != nil { if err != nil {
return err return err
} }
defer db.Close() 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 return err
} }

View File

@@ -145,7 +145,7 @@ func GetPackage(name string) (utils.Package, error) {
defer db.Close() defer db.Close()
var packageUrl string 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( Scan(
&this.QueryName, &this.QueryName,
&this.Version, &this.Version,
@@ -161,6 +161,7 @@ func GetPackage(name string) (utils.Package, error) {
&this.Family, &this.Family,
&this.Serial, &this.Serial,
&this.Size, &this.Size,
&this.Dependencies,
) )
if err != nil { if err != nil {
return utils.Package{}, err return utils.Package{}, err