enhance package database schema and configuration; add dependencies
This commit is contained in:
		@@ -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)
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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"`
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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,
 | 
			
		||||
 
 | 
			
		||||
@@ -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"
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user