- c = self.db.cursor()
- c.execute(R"""CREATE OR REPLACE FUNCTION metadata_keys_get(key_ text)
- RETURNS integer
- LANGUAGE plpgsql
- STRICT
-AS $function$
-DECLARE
- v_key_id metadata_keys.key_id%TYPE;
-BEGIN
- SELECT key_id INTO v_key_id FROM metadata_keys WHERE key = key_;
- IF NOT FOUND THEN
- INSERT INTO metadata_keys (key) VALUES (key_) RETURNING key_id INTO v_key_id;
- END IF;
- RETURN v_key_id;
-END;
-$function$
-""")
-
- c.execute("""COMMENT ON FUNCTION metadata_keys_get(text)
-IS 'return key_id for the given key. If key is not present, create a new entry.'
-""")
-
- c.execute(R"""CREATE OR REPLACE FUNCTION source_metadata_add_missing_checksum(type text)
- RETURNS INTEGER
- LANGUAGE plpgsql
- STRICT
-AS $function$
-DECLARE
- v_checksum_key metadata_keys.key_id%TYPE;
- rows INTEGER;
-BEGIN
- IF type NOT IN ('Files', 'Checksums-Sha1', 'Checksums-Sha256') THEN
- RAISE EXCEPTION 'Unknown checksum field %', type;
- END IF;
- v_checksum_key := metadata_keys_get(type);