]> git.ozlabs.org Git - patchwork/blob - lib/sql/migration/005-bundle-patch-ordering.sql
login: Focus the username field on load
[patchwork] / lib / sql / migration / 005-bundle-patch-ordering.sql
1 BEGIN;
2 CREATE TABLE "patchwork_bundlepatch" (
3     "id" SERIAL NOT NULL PRIMARY KEY,
4     "patch_id" INTEGER NOT NULL
5         REFERENCES "patchwork_patch" ("id") DEFERRABLE INITIALLY DEFERRED,
6     "bundle_id" INTEGER NOT NULL
7         REFERENCES "patchwork_bundle" ("id") DEFERRABLE INITIALLY DEFERRED,
8     "order" SERIAL NOT NULL,
9     UNIQUE ("bundle_id", "patch_id")
10 );
11
12 -- we 'INSERT INTO ... SELECT' (rather than renaming and adding the order
13 -- column) here so that we can order by date
14 INSERT INTO patchwork_bundlepatch (id, patch_id, bundle_id)
15     SELECT patchwork_bundle_patches.id, patch_id, bundle_id
16         FROM patchwork_bundle_patches
17         INNER JOIN patchwork_patch
18             ON patchwork_patch.id = patchwork_bundle_patches.patch_id
19         ORDER BY bundle_id, patchwork_patch.date;
20 COMMIT;
21
22 BEGIN;
23 ALTER TABLE patchwork_bundlepatch
24     ALTER COLUMN "order" TYPE INTEGER;
25
26 -- initialise the starting number for this sequence
27 SELECT setval('patchwork_bundlepatch_id_seq',
28         (SELECT max(id) + 1 FROM patchwork_bundlepatch));
29
30 DROP TABLE patchwork_bundle_patches;
31
32 -- normalise ordering: order should start with 1 in each bundle
33 UPDATE patchwork_bundlepatch SET "order" = 1 + "order" -
34         (SELECT min("order") FROM patchwork_bundlepatch AS p2
35                 WHERE p2.bundle_id = patchwork_bundlepatch.bundle_id);
36
37 GRANT SELECT, INSERT, UPDATE, DELETE ON patchwork_bundlepatch TO "www-data";
38 GRANT SELECT, UPDATE ON patchwork_bundlepatch_id_seq TO "www-data";
39
40 COMMIT;