X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=db.sql;h=75e5354809459683fda2c04872de6ebf04c1a0a1;hb=291309674a2bd7b1612460bc167544f7afd1be7b;hp=be2a3b3725ba2c89ddeedc1a953dc4b72a208a9f;hpb=1ddd2837afe1394fa4f91ffed606fff5b6a60dff;p=zpackage diff --git a/db.sql b/db.sql index be2a3b3..75e5354 100644 --- a/db.sql +++ b/db.sql @@ -4,6 +4,9 @@ PRAGMA application_id = 0x5a504442; PRAGMA user_version = 1; -- should be faster with rowid due to the blob content +-- these are really just blobs of data +-- TODO copyright and license information should probably +-- go here CREATE TABLE files ( hash text primary key, size integer, @@ -12,10 +15,15 @@ CREATE TABLE files ( ) ; +-- information about packages +-- a package is identified by a package,version,release triple create table packages ( + -- primary key columns package text, version text, -- the upstream version string release integer, -- the local release number + + -- metadata columns description text, architecture text, url text, @@ -29,52 +37,82 @@ create table packages ( without rowid ; +-- files contained in a package create table packagefiles ( + -- package id triple package text, version text, release integer, - path text, + + path text, -- filesystem path mode text, -- perms, use text for octal rep? username text, -- name of owner groupname text, -- group of owner - --filetype integer default 0, -- 0 regular file, 1 directory, 2 symlink - -- regular file if null target and not null hash - -- except that we could not know the hash, or care - -- directory if null hash and null target - -- symlink if null hash and not null target - -- hard link if not null hash and not null target - -- device special files add dev number column - -- fifos add mode? Can encode filetype in mode. - target text, -- link target - hash text, -- what should go here, null for dir? - mtime integer, -- seconds since epoch, but allow finer? + uid integer, -- numeric uid, generally ignored + gid integer, -- numeric gid, generally ignored + filetype varchar default 'r', + -- r regular file + -- d directory + -- s symlink + -- h hard link -- not supported + -- c character special and b device special files add dev number column + -- b block special + -- p fifos (i.e. pipe) + target text, -- link target for links + -- device file dev numbers, should probably be a separate table + devmajor integer, + devminor integer, + hash text, -- null if no actual content, i.e. anything but a regular file + mtime integer, -- seconds since epoch, finer resolution probably not needed primary key (package,version,release,path), foreign key (package,version,release) references packages (package,version,release) on delete cascade ) without rowid ; --- TODO just elf information? --- and just hash, not package? -create table libraries ( +create table packagefiletags ( + -- package id triple package text, - subpackage text, - path text, - soname text + version text, + release integer, + + path text, -- filesystem path + tag text, + primary key (package,version,release,path,tag) ) +without rowid ; -create table librarydeps ( - package text, - subpackage text, - path text, - soname text -- soname of dependency +create table elfinfo ( + file text, -- hash of blob + elftype text, + foreign key (file) references files on delete cascade ); +-- TODO just elf information? +-- and just hash, not package? +create table elflibraries ( + file text primary key, + soname text, + foreign key (file) references files on delete cascade +) +without rowid +; + +create table elfneeded ( + file text, + needed text, -- soname of dependency + primary key (file, needed), + foreign key (file) references files on delete cascade +) +without rowid +; + -- package scripts: table of package, stage, file create table scripts ( package text, - subpackage text, + version text, + release integer, stage text, hash text ); @@ -82,11 +120,14 @@ create table scripts ( -- package dependencies: table of package, dependency, dep type (package, soname) create table packagedeps ( package text, - subpackage text, - requires text, -- package name - subreq text, -- if requires only a sub package, probably most common for libs + version text, + release integer, + required text, -- package name + -- following can be null for not checked minversion text, - maxversion text + minrelease integer, + maxversion text, + maxrelease integer ); -- capability labels @@ -106,4 +147,5 @@ create table packagegroups ( package text, "group" text ); + commit;