]> pd.if.org Git - zpackage/blobdiff - db.sql
remove unused mode variable extract mode hardcoded
[zpackage] / db.sql
diff --git a/db.sql b/db.sql
index 0bdc6549131bcb981885767d62058e9f2be2bb27..2c03a4a43d1827e3cce1b159b2522ad587485fe5 100644 (file)
--- a/db.sql
+++ b/db.sql
@@ -28,6 +28,7 @@ create table packages (
        description     text,
        architecture    text,
        url     text,
+       status  text,
        licenses        text, -- hash of actual license?  need table for more than one?
        packager        text,
        build_time      integer default (strftime('%s', 'now')),
@@ -38,6 +39,24 @@ create table packages (
 without rowid
 ;
 
+-- handle package status history with a logging trigger.
+create trigger logpkgstatus after update of status on packages
+begin insert into zpmlog (action,target,info)
+               values (printf('status change %s %s', OLD.status, NEW.status),
+               printf('%s-%s-%s', NEW.package, NEW.version, NEW.release),
+               NULL); END;
+
+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,
@@ -47,7 +66,7 @@ without rowid
 -- really don't like this.
 
 -- files contained in a package
-create table paths (
+create table packagefiles (
        -- package id triple
        package text,
        version text,
@@ -93,10 +112,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?
@@ -167,7 +198,8 @@ create table packagegroups (
 -- 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
+       ts      text default (strftime('%Y-%m-%d %H:%M:%f', 'now')),
+               -- timestamp of action
        action  text,
        target  text, -- packagename, repo name, etc
        info    text -- human readable
@@ -187,6 +219,15 @@ create table repository (
        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,