~launchpad-results/launchpad-results/trunk

« back to all changes in this revision

Viewing changes to lib/lpresults/hardware/schema/__init__.py

  • Committer: Marc Tardif
  • Date: 2012-03-21 22:32:04 UTC
  • Revision ID: marc.tardif@canonical.com-20120321223204-8g7mvzzwmh8ifbrt
Added support for getting systems from a person (LP #899361)

Show diffs side-by-side

added added

removed removed

Lines of Context:
20
20
 
21
21
CREATES = [
22
22
"""
23
 
GRANT SELECT
 
23
GRANT SELECT, INSERT
24
24
    ON TABLE patch
25
25
    TO lpresults
26
26
""",
33
33
""",
34
34
"""
35
35
ALTER TEXT SEARCH CONFIGURATION public.lpresults_english
36
 
   ALTER MAPPING FOR asciiword WITH english_stem
 
36
    ALTER MAPPING FOR asciiword WITH english_stem
37
37
""",
38
38
"""
39
39
CREATE TABLE system (
272
272
CREATE RULE devicestate_delete
273
273
    AS ON DELETE TO devicestate
274
274
    DO INSTEAD
275
 
       (UPDATE devicestate SET date_deleted=now()
276
 
       WHERE id=OLD.id AND date_deleted='infinity';)
 
275
        (UPDATE devicestate SET date_deleted=now()
 
276
        WHERE id=OLD.id AND date_deleted='infinity';)
277
277
""",
278
278
"""
279
279
CREATE TABLE processorplatform (
338
338
    TO lpresults
339
339
""",
340
340
"""
341
 
CREATE LANGUAGE plpythonu
 
341
CREATE OR REPLACE LANGUAGE plpythonu
342
342
""",
343
343
"""
344
344
CREATE FUNCTION text_as_grams(i_txt TEXT) RETURNS TEXT
356
356
    TO lpresults
357
357
""",
358
358
"""
359
 
CREATE LANGUAGE plpgsql
360
 
""",
361
 
"""
362
 
CREATE FUNCTION next_devicebus_product_sequence(
363
 
    bus INTEGER)
364
 
    RETURNS INTEGER
365
 
LANGUAGE plpgsql AS
366
 
$$
367
 
DECLARE
368
 
    next_sequence INTEGER;
369
 
BEGIN
370
 
    UPDATE devicebus SET product_counter = product_counter + 1
371
 
        WHERE id = bus;
372
 
    SELECT INTO next_sequence product_counter FROM devicebus
373
 
        WHERE id = bus;
374
 
    RETURN next_sequence;
375
 
END;
376
 
$$
377
 
""",
378
 
"""
379
 
GRANT EXECUTE
380
 
    ON FUNCTION next_devicebus_product_sequence(INTEGER)
381
 
    TO lpresults
382
 
""",
383
 
"""
384
 
CREATE FUNCTION next_devicebus_vendor_sequence(
385
 
    bus INTEGER)
386
 
    RETURNS INTEGER
387
 
LANGUAGE plpgsql AS
388
 
$$
389
 
DECLARE
390
 
    next_sequence INTEGER;
391
 
BEGIN
392
 
    UPDATE devicebus SET vendor_counter = vendor_counter + 1
393
 
        WHERE id = bus;
394
 
    SELECT INTO next_sequence vendor_counter FROM devicebus
395
 
        WHERE id = bus;
396
 
    RETURN next_sequence;
397
 
END;
398
 
$$
399
 
""",
400
 
"""
401
 
GRANT EXECUTE
402
 
    ON FUNCTION next_devicebus_vendor_sequence(INTEGER)
403
 
    TO lpresults
404
 
""",
405
 
"""
406
 
CREATE FUNCTION next_system_sequence(
407
 
    system_id INTEGER)
408
 
    RETURNS INTEGER
409
 
LANGUAGE plpgsql AS
410
 
$$
411
 
DECLARE
412
 
    next_sequence INTEGER;
 
359
CREATE OR REPLACE LANGUAGE plpgsql
 
360
""",
 
361
"""
 
362
CREATE FUNCTION systemunit_insert_before() RETURNS TRIGGER
 
363
LANGUAGE plpgsql AS
 
364
$$
413
365
BEGIN
414
366
    UPDATE system SET counter = counter + 1
415
 
        WHERE id = system_id;
416
 
    SELECT INTO next_sequence counter FROM system
417
 
        WHERE id = system_id;
418
 
    RETURN next_sequence;
419
 
END;
420
 
$$
421
 
""",
422
 
"""
423
 
GRANT EXECUTE
424
 
    ON FUNCTION next_system_sequence(INTEGER)
425
 
    TO lpresults
426
 
""",
427
 
"""
428
 
CREATE FUNCTION systemunit_insert_before() RETURNS TRIGGER
429
 
LANGUAGE plpgsql AS
430
 
$$
431
 
BEGIN
432
 
   NEW.sequence = next_system_sequence(NEW.system);
 
367
        WHERE id = NEW.system RETURNING counter INTO NEW.sequence;
433
368
 
434
 
   RETURN NEW;
 
369
    RETURN NEW;
435
370
END
436
371
$$
437
372
""",
840
775
BEGIN
841
776
    IF TG_OP = 'INSERT' THEN
842
777
        IF NEW.vendor IS NULL THEN
843
 
            NEW.vendor := next_devicebus_vendor_sequence(NEW.bus);
 
778
            UPDATE devicebus SET vendor_counter = vendor_counter + 1
 
779
                WHERE id = NEW.bus RETURNING vendor_counter INTO NEW.vendor;
844
780
        ELSIF NEW.vendor > x'FFFF'::int THEN
845
781
            RAISE EXCEPTION 'vendor must be less than 2^16: %s', NEW.vendor;
846
782
        END IF;
882
818
BEGIN
883
819
    IF TG_OP = 'INSERT' THEN
884
820
        IF NEW.product IS NULL THEN
885
 
            NEW.product := next_devicebus_product_sequence(NEW.bus);
 
821
            UPDATE devicebus SET product_counter = product_counter + 1
 
822
                WHERE id = NEW.bus RETURNING product_counter INTO NEW.product;
886
823
        ELSIF NEW.product > x'FFFF'::int THEN
887
824
            RAISE EXCEPTION 'product must be less than 2^16: %s', NEW.product;
888
825
        END IF;