Merge lp:~cjwatson/launchpad/db-snap-upload-to-store into lp:launchpad/db-devel

Proposed by Colin Watson
Status: Merged
Merged at revision: 13419
Proposed branch: lp:~cjwatson/launchpad/db-snap-upload-to-store
Merge into: lp:launchpad/db-devel
Diff against target: 90 lines (+74/-0)
2 files modified
database/schema/patch-2209-69-3.sql (+71/-0)
database/schema/security.cfg (+3/-0)
To merge this branch: bzr merge lp:~cjwatson/launchpad/db-snap-upload-to-store
Reviewer Review Type Date Requested Status
William Grant db Approve
Review via email: mp+292391@code.launchpad.net

Commit message

Add SnappySeries, SnappyDistroSeries, and SnapBuildJob tables; add Snap columns needed for automatic store uploading.

Description of the change

Add SnappySeries, SnappyDistroSeries, and SnapBuildJob tables; add Snap columns needed for automatic store uploading.

To post a comment you must log in.
Revision history for this message
William Grant (wgrant) :
review: Approve (db)

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== added file 'database/schema/patch-2209-69-3.sql'
--- database/schema/patch-2209-69-3.sql 1970-01-01 00:00:00 +0000
+++ database/schema/patch-2209-69-3.sql 2016-05-06 11:50:31 +0000
@@ -0,0 +1,71 @@
1-- Copyright 2016 Canonical Ltd. This software is licensed under the
2-- GNU Affero General Public License version 3 (see the file LICENSE).
3
4SET client_min_messages=ERROR;
5
6CREATE TABLE SnappySeries (
7 id serial PRIMARY KEY,
8 date_created timestamp without time zone DEFAULT (CURRENT_TIMESTAMP AT TIME ZONE 'UTC') NOT NULL,
9 registrant integer NOT NULL REFERENCES person,
10 name text NOT NULL,
11 display_name text NOT NULL,
12 status integer NOT NULL
13);
14
15CREATE UNIQUE INDEX snappyseries__name__key ON SnappySeries(name);
16CREATE INDEX snappyseries__registrant__idx ON SnappySeries(registrant);
17CREATE INDEX snappyseries__status__idx ON SnappySeries(status);
18
19COMMENT ON TABLE SnappySeries IS 'A series for snap packages in the store.';
20COMMENT ON COLUMN SnappySeries.date_created IS 'The date on which this series was created in Launchpad.';
21COMMENT ON COLUMN SnappySeries.registrant IS 'The user who registered this series.';
22COMMENT ON COLUMN SnappySeries.name IS 'The unique name of this series.';
23COMMENT ON COLUMN SnappySeries.display_name IS 'The display name of this series.';
24COMMENT ON COLUMN SnappySeries.status IS 'The current status of this series.';
25
26CREATE TABLE SnappyDistroSeries (
27 snappy_series integer NOT NULL REFERENCES snappyseries,
28 distro_series integer NOT NULL REFERENCES distroseries,
29 PRIMARY KEY (snappy_series, distro_series)
30);
31
32CREATE INDEX snappydistroseries__distro_series__idx ON SnappyDistroSeries(distro_series);
33
34COMMENT ON TABLE SnappyDistroSeries IS 'A record indicating that a particular snappy series is valid for builds from a particular distribution series.';
35COMMENT ON COLUMN SnappyDistroSeries.snappy_series IS 'The snappy series which is valid for builds from this distribution series.';
36COMMENT ON COLUMN SnappyDistroSeries.distro_series IS 'The distribution series whose builds are valid for this snappy series.';
37
38ALTER TABLE Snap
39 ADD COLUMN store_upload boolean DEFAULT false NOT NULL,
40 ADD COLUMN store_series integer REFERENCES snappyseries,
41 ADD COLUMN store_name text,
42 ADD COLUMN store_secrets text,
43 ADD CONSTRAINT consistent_store_upload CHECK (
44 NOT store_upload
45 OR (store_series IS NOT NULL AND store_name IS NOT NULL));
46
47COMMENT ON COLUMN Snap.store_upload IS 'Whether builds of this snap package are automatically uploaded to the store.';
48COMMENT ON COLUMN Snap.store_series IS 'The series in which this snap package should be published in the store.';
49COMMENT ON COLUMN Snap.store_name IS 'The registered name of this snap package in the store.';
50COMMENT ON COLUMN Snap.store_secrets IS 'Serialized secrets issued by the store and the login service to authorize uploads of this snap package.';
51
52CREATE INDEX snap__store_series__idx
53 ON Snap(store_series) WHERE store_series IS NOT NULL;
54
55CREATE TABLE SnapBuildJob (
56 job integer PRIMARY KEY REFERENCES Job ON DELETE CASCADE NOT NULL,
57 snapbuild integer REFERENCES SnapBuild NOT NULL,
58 job_type integer NOT NULL,
59 json_data text NOT NULL
60);
61
62CREATE INDEX snapbuildjob__snapbuild__job_type__job__idx
63 ON SnapBuildJob(snapbuild, job_type, job);
64
65COMMENT ON TABLE SnapBuildJob IS 'Contains references to jobs that are executed for a build of a snap package.';
66COMMENT ON COLUMN SnapBuildJob.job IS 'A reference to a Job row that has all the common job details.';
67COMMENT ON COLUMN SnapBuildJob.snapbuild IS 'The snap build that this job is for.';
68COMMENT ON COLUMN SnapBuildJob.job_type IS 'The type of a job, such as a store upload.';
69COMMENT ON COLUMN SnapBuildJob.json_data IS 'Data that is specific to a particular job type.';
70
71INSERT INTO LaunchpadDatabaseRevision VALUES (2209, 69, 3);
072
=== modified file 'database/schema/security.cfg'
--- database/schema/security.cfg 2016-04-16 12:21:40 +0000
+++ database/schema/security.cfg 2016-05-06 11:50:31 +0000
@@ -291,7 +291,10 @@
291public.snap = SELECT, INSERT, UPDATE, DELETE291public.snap = SELECT, INSERT, UPDATE, DELETE
292public.snaparch = SELECT, INSERT, DELETE292public.snaparch = SELECT, INSERT, DELETE
293public.snapbuild = SELECT, INSERT, UPDATE, DELETE293public.snapbuild = SELECT, INSERT, UPDATE, DELETE
294public.snapbuildjob = SELECT, INSERT, UPDATE, DELETE
294public.snapfile = SELECT, INSERT, UPDATE, DELETE295public.snapfile = SELECT, INSERT, UPDATE, DELETE
296public.snappydistroseries = SELECT, INSERT, DELETE
297public.snappyseries = SELECT, INSERT, UPDATE, DELETE
295public.sourcepackageformatselection = SELECT298public.sourcepackageformatselection = SELECT
296public.sourcepackagepublishinghistory = SELECT299public.sourcepackagepublishinghistory = SELECT
297public.sourcepackagerecipe = SELECT, INSERT, UPDATE, DELETE300public.sourcepackagerecipe = SELECT, INSERT, UPDATE, DELETE

Subscribers

People subscribed via source and target branches

to status/vote changes: