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)
}
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)
}

View File

@@ -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
}

View File

@@ -22,5 +22,6 @@ type ConfigTOML struct {
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"`
}

View File

@@ -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,

View File

@@ -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"

View File

@@ -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
}

View File

@@ -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