]> pd.if.org Git - zpackage/blob - db.sql
be2a3b3725ba2c89ddeedc1a953dc4b72a208a9f
[zpackage] / db.sql
1 begin;
2
3 PRAGMA application_id = 0x5a504442;
4 PRAGMA user_version = 1;
5
6 -- should be faster with rowid due to the blob content
7 CREATE TABLE files (
8         hash text primary key,
9         size integer,
10         compression text,
11         content blob
12 )
13 ;
14
15 create table packages (
16         package text,
17         version text, -- the upstream version string
18         release integer, -- the local release number
19         description     text,
20         architecture    text,
21         url     text,
22         licenses        text, -- hash of actual license?  need table for more than one?
23         packager        text,
24         build_time      integer default (strftime('%s', 'now')),
25         install_time    integer,
26         checksum        text, -- checksum of package contents.  null for incompleted packages
27         primary key (package,version,release)
28 )
29 without rowid
30 ;
31
32 create table packagefiles (
33         package text,
34         version text,
35         release integer,
36         path    text,
37         mode    text, -- perms, use text for octal rep?
38         username        text, -- name of owner
39         groupname       text, -- group of owner
40         --filetype      integer default 0, -- 0 regular file, 1 directory, 2 symlink
41         -- regular file if null target and not null hash
42         -- except that we could not know the hash, or care
43         -- directory if null hash and null target
44         -- symlink if null hash and not null target
45         -- hard link if not null hash and not null target
46         -- device special files add dev number column
47         -- fifos add mode?  Can encode filetype in mode.
48         target  text, -- link target
49         hash    text, -- what should go here, null for dir?
50         mtime   integer, -- seconds since epoch, but allow finer?
51         primary key (package,version,release,path),
52         foreign key (package,version,release) references packages (package,version,release) on delete cascade
53 )
54 without rowid
55 ;
56
57 -- TODO just elf information?
58 -- and just hash, not package?
59 create table libraries (
60         package text,
61         subpackage      text,
62         path    text,
63         soname  text
64 )
65 ;
66
67 create table librarydeps (
68         package text,
69         subpackage      text,
70         path    text,
71         soname  text -- soname of dependency
72 );
73
74 -- package scripts: table of package, stage, file
75 create table scripts (
76         package text,
77         subpackage      text,
78         stage   text,
79         hash    text
80 );
81
82 -- package dependencies: table of package, dependency, dep type (package, soname)
83 create table packagedeps (
84         package text,
85         subpackage      text,
86         requires        text, -- package name
87         subreq  text, -- if requires only a sub package, probably most common for libs
88         minversion      text,
89         maxversion      text
90 );
91
92 -- capability labels
93 create table provides (
94         package text,
95         subpackage      text,
96         label   text -- a capability label
97 );
98
99 create table requires (
100         package text,
101         subpackage      text,
102         label   text -- a capability label
103 );
104
105 create table packagegroups (
106         package text,
107         "group" text
108 );
109 commit;