-- 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
- pkgid text, -- the three above joined with '-'
+ package text not null,
+ version text not null, -- the upstream version string
+ release integer not null, -- the local release number
+-- pkgid text, -- the three above joined with '-'
-- metadata columns
description text,
install_time integer,
checksum text, -- checksum of package contents. null for incompleted packages
primary key (package,version,release),
+ check (typeof(package) = 'text'),
+ check (typeof(version) = 'text'),
check (typeof(release) = 'integer'),
check (release > 0)
- -- TODO enforce name and release conventions
+ -- TODO enforce name and version conventions
+ -- check(instr(version,'-') = 0)
+ -- check(instr(package,'/') = 0)
+ -- check(instr(package,'/') = 0)
+ -- check(length(package) < 64)
+ -- check(length(version) < 32)
)
without rowid
;
+create view packages_pkgid as
+select printf('%s-%s-%s', package, version, release) as pkgid, *
+from packages;
+
-- handle package status history with a logging trigger.
create trigger logpkgstatus after update of status on packages
begin insert into zpmlog (action,target,info)