Add partial creation function for note_audio
This commit is contained in:
parent
b92306a8b7
commit
58f5afccc9
1 changed files with 79 additions and 1 deletions
|
|
@ -80,11 +80,89 @@ CREATE TABLE note_image_breadcrumb (
|
|||
PRIMARY KEY (note_image_version, note_image_uuid, position)
|
||||
);
|
||||
|
||||
-- +goose StatementBegin
|
||||
CREATE OR REPLACE FUNCTION insert_note_audio(
|
||||
p_uuid UUID,
|
||||
|
||||
p_created TIMESTAMP WITHOUT TIME ZONE,
|
||||
p_creator_id INTEGER,
|
||||
p_deleted TIMESTAMP WITHOUT TIME ZONE,
|
||||
p_deletor_id INTEGER,
|
||||
p_duration REAL,
|
||||
p_organization_id INTEGER,
|
||||
p_transcription TEXT,
|
||||
p_transcription_user_edited BOOLEAN
|
||||
) RETURNS TABLE(row_inserted BOOLEAN, version_num INTEGER) AS $$
|
||||
DECLARE
|
||||
v_next_version INTEGER;
|
||||
v_changes_exist BOOLEAN;
|
||||
BEGIN
|
||||
-- Check if changes exist
|
||||
SELECT NOT EXISTS (
|
||||
SELECT 1 FROM note_audio lv
|
||||
WHERE lv.uuid = p_uuid
|
||||
|
||||
AND lv.created IS NOT DISTINCT FROM p_created
|
||||
AND lv.creator_id IS NOT DISTINCT FROM p_creator_id
|
||||
AND lv.deleted IS NOT DISTINCT FROM p_deleted
|
||||
AND lv.deletor_id IS NOT DISTINCT FROM p_deletor_id
|
||||
AND lv.duration IS NOT DISTINCT FROM p_duration
|
||||
AND lv.organization_id IS NOT DISTINCT FROM p_organization_id
|
||||
AND lv.transcription IS NOT DISTINCT FROM p_transcription
|
||||
AND lv.transcription_user_edited IS NOT DISTINCT FROM p_transcription_user_edited
|
||||
ORDER BY VERSION DESC LIMIT 1
|
||||
) INTO v_changes_exist;
|
||||
|
||||
-- If no changes, return false with current version
|
||||
IF NOT v_changes_exist THEN
|
||||
RETURN QUERY
|
||||
SELECT
|
||||
FALSE AS row_inserted,
|
||||
(SELECT VERSION FROM note_audio
|
||||
WHERE uuid = p_uuid ORDER BY VERSION DESC LIMIT 1) AS version_num;
|
||||
RETURN;
|
||||
END IF;
|
||||
|
||||
-- Calculate next version
|
||||
SELECT COALESCE(MAX(VERSION) + 1, 1) INTO v_next_version
|
||||
FROM note_audio
|
||||
WHERE uuid = p_uuid;
|
||||
|
||||
-- Insert new version
|
||||
INSERT INTO note_audio (
|
||||
uuid,
|
||||
|
||||
created,
|
||||
creator_id,
|
||||
deleted,
|
||||
deletor_id,
|
||||
duration,
|
||||
organization_id,
|
||||
transcription,
|
||||
transcription_user_edited
|
||||
) VALUES (
|
||||
p_uuid,
|
||||
|
||||
p_created,
|
||||
p_creator_id,
|
||||
p_deleted,
|
||||
p_deletor_id,
|
||||
p_duration,
|
||||
p_organization_id,
|
||||
p_transcription,
|
||||
p_transcription_user_edited
|
||||
);
|
||||
|
||||
-- Return success with new version
|
||||
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
|
||||
END;
|
||||
$$ LANGUAGE plpgsql;
|
||||
-- +goose StatementEnd
|
||||
-- +goose Down
|
||||
DROP TABLE note_image_breadcrumb;
|
||||
DROP TABLE note_image_data;
|
||||
DROP TABLE note_image;
|
||||
DROP TYPE ImageDataType
|
||||
DROP TYPE ImageDataType;
|
||||
DROP TABLE note_audio_breadcrumb;
|
||||
DROP TABLE note_audio_data;
|
||||
DROP TABLE note_audio;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue