diff --git a/cmd/packets/main.go b/cmd/packets/main.go index 97f6d76..60eb83f 100644 --- a/cmd/packets/main.go +++ b/cmd/packets/main.go @@ -61,7 +61,7 @@ func init() { log.Fatal(db) } defer db.Close() - 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, 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)") + db.Exec("CREATE TABLE IF NOT EXISTS packages (query_name TEXT NOT NULL,id TEXT NOT NULL UNIQUE PRIMARY KEY, version TEXT NOT NULL, dependencies TEXT NOT NULL DEFAULT '', description TEXT NOT NULL, family TEXT NOT NULL, 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)") } else { log.Fatal(err) } @@ -250,7 +250,7 @@ var installCmd = &cobra.Command{ } - rows, err := db.Query("SELECT name, version, description FROM packages WHERE query_name = ?", inputName) + rows, err := db.Query("SELECT id, version, description FROM packages WHERE query_name = ?", inputName) if err != nil { log.Fatal(err) } @@ -509,7 +509,7 @@ var listCmd = &cobra.Command{ log.Fatal(err) } - rows, err := db.Query("SELECT query_name, name, version, description, package_d, os, arch FROM packages") + rows, err := db.Query("SELECT query_name, id, version, description, package_d, os, arch FROM packages") if err != nil { log.Fatal(err) } @@ -546,14 +546,14 @@ var searchCmd = &cobra.Command{ var rows *sql.Rows if len(args) > 0 { - rows, err = db.Query("SELECT query_name, name, version, description, os, arch FROM packages WHERE name LIKE ? OR description LIKE ? OR query_name LIKE ?", args[0], args[0], args[0]) + rows, err = db.Query("SELECT query_name, id, version, description, os, arch FROM packages WHERE name LIKE ? OR description LIKE ? OR query_name LIKE ?", args[0], args[0], args[0]) if err != nil { log.Fatal(err) } defer rows.Close() } else { - rows, err = db.Query("SELECT query_name, name, version, description, os, arch FROM packages") + rows, err = db.Query("SELECT query_name, id, version, description, os, arch FROM packages") if err != nil { log.Fatal(err) } diff --git a/configs/structs.go b/configs/structs.go index 4df3e1a..62df67a 100644 --- a/configs/structs.go +++ b/configs/structs.go @@ -3,6 +3,7 @@ package configs type Manifest struct { Info struct { Name string `toml:"name"` + Id string `toml:"id"` Version string `toml:"version"` Description string `toml:"description"` Dependencies []string `toml:"dependencies"` diff --git a/doc/indexdbSchema.txt b/doc/indexdbSchema.txt index c912802..f5b1d8a 100644 --- a/doc/indexdbSchema.txt +++ b/doc/indexdbSchema.txt @@ -1,26 +1,34 @@ -CREATE TABLE packages( +CREATE TABLE packages ( + id TEXT NOT NULL UNIQUE PRIMARY KEY, query_name TEXT NOT NULL, - image_url TEXT NOT NULL, - name TEXT NOT NULL UNIQUE PRIMARY KEY, version TEXT NOT NULL, + serial INTEGER NOT NULL, + name TEXT NOT NULL, + description TEXT NOT NULL, + image_url TEXT NOT NULL, + package_url TEXT NOT NULL, public_key BLOB NOT NULL, signature BLOB NOT NULL, - description TEXT NOT NULL, - dependencies TEXT NOT NULL DEFAULT '', - package_url TEXT NOT NULL, author TEXT NOT NULL, author_verified INTEGER NOT NULL DEFAULT 0, - family TEXT NOT NULL, arch TEXT NOT NULL, os TEXT NOT NULL, size INTEGER NOT NULL DEFAULT 0, - serial INTEGER NOT NULL + + UNIQUE(query_name, version), + UNIQUE(query_name, serial) +); + +CREATE TABLE package_dependencies( + package_id TEXT NOT NULL, + dependencie_id TEXT NOT NULL, + version_constraint TEXT NOT NULL ); CREATE TABLE IF NOT EXISTS packages ( query_name TEXT NOT NULL, - name TEXT NOT NULL UNIQUE PRIMARY KEY, + id TEXT NOT NULL UNIQUE PRIMARY KEY, version TEXT NOT NULL, dependencies TEXT NOT NULL DEFAULT '', description TEXT NOT NULL, diff --git a/internal/utils/utils.go b/internal/utils/utils.go index 3c06e0d..231c4c6 100644 --- a/internal/utils/utils.go +++ b/internal/utils/utils.go @@ -211,7 +211,7 @@ func (p *Package) AddToInstalledDB(inCache int, packagePath string) error { defer func() { if !success { - _, err := db.Exec("DELETE FROM packages WHERE name = ?", p.Manifest.Info.Name) + _, err := db.Exec("DELETE FROM packages WHERE id = ?", p.Manifest.Info.Id) if err != nil { log.Println("Failed to rollback package addition:", err) } @@ -220,11 +220,11 @@ func (p *Package) AddToInstalledDB(inCache int, packagePath string) error { _, err = db.Exec(` INSERT INTO packages ( - query_name, name, version, dependencies, description, + query_name, id, version, dependencies, description, family, serial, package_d, filename, os, arch, in_cache ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, p.QueryName, - p.Manifest.Info.Name, + p.Manifest.Info.Id, p.Version, p.Dependencies, p.Description, @@ -251,7 +251,7 @@ func CheckIfPackageInstalled(name string) (bool, error) { defer db.Close() var exists bool - err = db.QueryRow("SELECT EXISTS(SELECT 1 FROM packages WHERE name = ?)", name).Scan(&exists) + err = db.QueryRow("SELECT EXISTS(SELECT 1 FROM packages WHERE id = ?)", name).Scan(&exists) if err != nil { return false, err } @@ -268,7 +268,7 @@ func GetDependencies(name string) ([]string, error) { var dependenciesRaw string - if err := db.QueryRow("SELECT dependencies FROM packages WHERE name = ?", name).Scan(&dependenciesRaw); err != nil { + if err := db.QueryRow("SELECT dependencies FROM packages WHERE id = ?", name).Scan(&dependenciesRaw); err != nil { return []string{}, err } @@ -293,7 +293,7 @@ func RemoveFromInstalledDB(name string) error { return err } - if _, err = db.Exec("DELETE FROM packages WHERE name = ?", name); err != nil { + if _, err = db.Exec("DELETE FROM packages WHERE id = ?", name); err != nil { return err } @@ -313,7 +313,7 @@ func GetPackage(name string) (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, dependencies 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 id = ?", name). Scan( &this.QueryName, &this.Version,