X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=db.sql;h=6eb01906be160c00f26c263f4c033b46d81ad63a;hb=9ed8a8ffdb3c31be8d324a9a67a84aad59922c9f;hp=75e5354809459683fda2c04872de6ebf04c1a0a1;hpb=716594541678bab99bbe1e2647ee9798c9962945;p=zpackage diff --git a/db.sql b/db.sql index 75e5354..6eb0190 100644 --- a/db.sql +++ b/db.sql @@ -8,9 +8,9 @@ PRAGMA user_version = 1; -- TODO copyright and license information should probably -- go here CREATE TABLE files ( - hash text primary key, - size integer, - compression text, + hash text primary key, -- sha256 of content + size integer, -- bigint? certainly need > 2GB + compression text, -- always xz? content blob ) ; @@ -22,6 +22,7 @@ create table packages ( package text, version text, -- the upstream version string release integer, -- the local release number + pkgid text, -- the three above joined with '-' -- metadata columns description text, @@ -37,6 +38,25 @@ create table packages ( without rowid ; +create table packagetags ( + -- package id triple + package text, + version text, + release integer, + tag text, + set_time integer default (strftime('%s', 'now')), + primary key (package,version,release,tag), + foreign key (package,version,release) references packages (package,version,release) on delete cascade +); + +-- packagefile hash is columns as text, joined with null bytes, then +-- sha256 sum of that +-- package checksum is package columns as text, joined with null bytes, +-- other than the checksum and install_time column +-- then that hashed. finally, that hash, plus the ascii sorted +-- hashes of the package files all joined with newlines, hashed. +-- really don't like this. + -- files contained in a package create table packagefiles ( -- package id triple @@ -70,7 +90,7 @@ create table packagefiles ( without rowid ; -create table packagefiletags ( +create table pathtags ( -- package id triple package text, version text, @@ -84,10 +104,22 @@ without rowid ; create table elfinfo ( - file text, -- hash of blob + file text primary key, -- hash of blob elftype text, foreign key (file) references files on delete cascade -); +) +without rowid +; + +create table elfdeps ( + file text, + soname text, + dependency text, + primary key (file, soname, dependency), + foreign key (file) references files on delete cascade +) +without rowid +; -- TODO just elf information? -- and just hash, not package? @@ -148,4 +180,51 @@ create table packagegroups ( "group" text ); +-- zpm actions +-- not sure how machine readable this needs to be, +-- do not at all for now, figure it out later +-- could be worth logging all commands in a history table, +-- the zpm driver could do that and capture the exit status +-- as well +-- might want the history table to note a "group" to tie together +-- sub-invocations, probably an environment variable set if not +-- already set by zpm, probably a uuid or a timestamp +create table zpmlog ( + ts integer, -- timestamp of action, may need sub-second + action text, + target text, -- packagename, repo name, etc + info text -- human readable +); + +create table history ( + ts integer, -- again, probably needs timestamp sub second + cmd text, + args text, + status integer +); + +create table repository ( + name text primary key, -- our name for a repo + url text not null, + priority integer not null default 1, + refreshed integer -- last refresh time +); + +-- urls for downloading packages. possibly unneeded +create table repository_packages ( + repo text, + pkg text, -- glob pattern? in which case others not needed + version text, + release text, + url text +); + +-- track which repository a package was cloned from, i.e. where we got it +create table packagesource ( + name text, + version text, + release integer, + repository text references repository +); + commit;