nidus-sync/db/migrations/00020_add_org_id_fieldseeker_v2.sql
Eli Ribble 1395e3d3ac Remove old FieldSeeker tables, use v2 generated tables.
This requires a bunch of changes since the types on these tables are
much closer to the underlying types of the Fieldseeker data we are
getting back from the API.

I now need to use proper UUID types everywhere, which means I had to
modify the bob gen config to consistently use google UUID, my UUID
library of choice.

I also had to add the organization_id to all the fieldseeker tables
since we rely on them existing for some of our compound queries.

There were some changes to the API type signatures to get things to
build. I may yet regret those.
2025-12-24 17:58:08 -07:00

9817 lines
260 KiB
PL/PgSQL

-- +goose Up
ALTER TABLE fieldseeker.containerrelate ADD COLUMN organization_id INTEGER NOT NULL REFERENCES organization(id);
ALTER TABLE fieldseeker.fieldscoutinglog ADD COLUMN organization_id INTEGER NOT NULL REFERENCES organization(id);
ALTER TABLE fieldseeker.habitatrelate ADD COLUMN organization_id INTEGER NOT NULL REFERENCES organization(id);
ALTER TABLE fieldseeker.inspectionsample ADD COLUMN organization_id INTEGER NOT NULL REFERENCES organization(id);
ALTER TABLE fieldseeker.inspectionsampledetail ADD COLUMN organization_id INTEGER NOT NULL REFERENCES organization(id);
ALTER TABLE fieldseeker.linelocation ADD COLUMN organization_id INTEGER NOT NULL REFERENCES organization(id);
ALTER TABLE fieldseeker.locationtracking ADD COLUMN organization_id INTEGER NOT NULL REFERENCES organization(id);
ALTER TABLE fieldseeker.mosquitoinspection ADD COLUMN organization_id INTEGER NOT NULL REFERENCES organization(id);
ALTER TABLE fieldseeker.pointlocation ADD COLUMN organization_id INTEGER NOT NULL REFERENCES organization(id);
ALTER TABLE fieldseeker.polygonlocation ADD COLUMN organization_id INTEGER NOT NULL REFERENCES organization(id);
ALTER TABLE fieldseeker.pool ADD COLUMN organization_id INTEGER NOT NULL REFERENCES organization(id);
ALTER TABLE fieldseeker.pooldetail ADD COLUMN organization_id INTEGER NOT NULL REFERENCES organization(id);
ALTER TABLE fieldseeker.proposedtreatmentarea ADD COLUMN organization_id INTEGER NOT NULL REFERENCES organization(id);
ALTER TABLE fieldseeker.qamosquitoinspection ADD COLUMN organization_id INTEGER NOT NULL REFERENCES organization(id);
ALTER TABLE fieldseeker.rodentlocation ADD COLUMN organization_id INTEGER NOT NULL REFERENCES organization(id);
ALTER TABLE fieldseeker.samplecollection ADD COLUMN organization_id INTEGER NOT NULL REFERENCES organization(id);
ALTER TABLE fieldseeker.samplelocation ADD COLUMN organization_id INTEGER NOT NULL REFERENCES organization(id);
ALTER TABLE fieldseeker.servicerequest ADD COLUMN organization_id INTEGER NOT NULL REFERENCES organization(id);
ALTER TABLE fieldseeker.speciesabundance ADD COLUMN organization_id INTEGER NOT NULL REFERENCES organization(id);
ALTER TABLE fieldseeker.stormdrain ADD COLUMN organization_id INTEGER NOT NULL REFERENCES organization(id);
ALTER TABLE fieldseeker.timecard ADD COLUMN organization_id INTEGER NOT NULL REFERENCES organization(id);
ALTER TABLE fieldseeker.trapdata ADD COLUMN organization_id INTEGER NOT NULL REFERENCES organization(id);
ALTER TABLE fieldseeker.traplocation ADD COLUMN organization_id INTEGER NOT NULL REFERENCES organization(id);
ALTER TABLE fieldseeker.treatment ADD COLUMN organization_id INTEGER NOT NULL REFERENCES organization(id);
ALTER TABLE fieldseeker.treatmentarea ADD COLUMN organization_id INTEGER NOT NULL REFERENCES organization(id);
ALTER TABLE fieldseeker.zones ADD COLUMN organization_id INTEGER NOT NULL REFERENCES organization(id);
ALTER TABLE fieldseeker.zones2 ADD COLUMN organization_id INTEGER NOT NULL REFERENCES organization(id);
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_containerrelate(
p_objectid bigint,
p_organization_id INTEGER,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_inspsampleid uuid,
p_mosquitoinspid uuid,
p_treatmentid uuid,
p_containertype varchar,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.containerrelate lv
WHERE lv.objectid = p_objectid
AND lv.organization_id = p_organization_id
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.inspsampleid IS NOT DISTINCT FROM p_inspsampleid
AND lv.mosquitoinspid IS NOT DISTINCT FROM p_mosquitoinspid
AND lv.treatmentid IS NOT DISTINCT FROM p_treatmentid
AND lv.containertype IS NOT DISTINCT FROM p_containertype
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.containerrelate
WHERE objectid = p_objectid AND organization_id = p_organization_id 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 fieldseeker.containerrelate
WHERE objectid = p_objectid AND organization_id = p_organization_id;
-- Insert new version
INSERT INTO fieldseeker.containerrelate (
objectid,
organization_id,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
inspsampleid,
mosquitoinspid,
treatmentid,
containertype,
creationdate,
creator,
editdate,
editor,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_organization_id,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_inspsampleid,
p_mosquitoinspid,
p_treatmentid,
p_containertype,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_fieldscoutinglog(
p_objectid bigint,
p_organization_id INTEGER,
p_status smallint,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.fieldscoutinglog lv
WHERE lv.objectid = p_objectid
AND lv.organization_id = p_organization_id
AND lv.status IS NOT DISTINCT FROM p_status
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.fieldscoutinglog
WHERE objectid = p_objectid AND organization_id = p_organization_id 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 fieldseeker.fieldscoutinglog
WHERE objectid = p_objectid AND organization_id = p_organization_id;
-- Insert new version
INSERT INTO fieldseeker.fieldscoutinglog (
objectid,
organization_id,
status,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
creationdate,
creator,
editdate,
editor,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_organization_id,
p_status,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_habitatrelate(
p_objectid bigint,
p_organization_id INTEGER,
p_foreign_id uuid,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_habitattype varchar,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.habitatrelate lv
WHERE lv.objectid = p_objectid
AND lv.organization_id = p_organization_id
AND lv.foreign_id IS NOT DISTINCT FROM p_foreign_id
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.habitattype IS NOT DISTINCT FROM p_habitattype
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.habitatrelate
WHERE objectid = p_objectid AND organization_id = p_organization_id 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 fieldseeker.habitatrelate
WHERE objectid = p_objectid AND organization_id = p_organization_id;
-- Insert new version
INSERT INTO fieldseeker.habitatrelate (
objectid,
organization_id,
foreign_id,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
habitattype,
creationdate,
creator,
editdate,
editor,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_organization_id,
p_foreign_id,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_habitattype,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_inspectionsampledetail(
p_objectid bigint,
p_organization_id INTEGER,
p_inspsample_id uuid,
p_fieldspecies varchar,
p_flarvcount smallint,
p_fpupcount smallint,
p_feggcount smallint,
p_flstages varchar,
p_fdomstage varchar,
p_fadultact varchar,
p_labspecies varchar,
p_llarvcount smallint,
p_lpupcount smallint,
p_leggcount smallint,
p_ldomstage varchar,
p_comments varchar,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_processed smallint,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.inspectionsampledetail lv
WHERE lv.objectid = p_objectid
AND lv.organization_id = p_organization_id
AND lv.inspsample_id IS NOT DISTINCT FROM p_inspsample_id
AND lv.fieldspecies IS NOT DISTINCT FROM p_fieldspecies
AND lv.flarvcount IS NOT DISTINCT FROM p_flarvcount
AND lv.fpupcount IS NOT DISTINCT FROM p_fpupcount
AND lv.feggcount IS NOT DISTINCT FROM p_feggcount
AND lv.flstages IS NOT DISTINCT FROM p_flstages
AND lv.fdomstage IS NOT DISTINCT FROM p_fdomstage
AND lv.fadultact IS NOT DISTINCT FROM p_fadultact
AND lv.labspecies IS NOT DISTINCT FROM p_labspecies
AND lv.llarvcount IS NOT DISTINCT FROM p_llarvcount
AND lv.lpupcount IS NOT DISTINCT FROM p_lpupcount
AND lv.leggcount IS NOT DISTINCT FROM p_leggcount
AND lv.ldomstage IS NOT DISTINCT FROM p_ldomstage
AND lv.comments IS NOT DISTINCT FROM p_comments
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.processed IS NOT DISTINCT FROM p_processed
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.inspectionsampledetail
WHERE objectid = p_objectid AND organization_id = p_organization_id 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 fieldseeker.inspectionsampledetail
WHERE objectid = p_objectid AND organization_id = p_organization_id;
-- Insert new version
INSERT INTO fieldseeker.inspectionsampledetail (
objectid,
organization_id,
inspsample_id,
fieldspecies,
flarvcount,
fpupcount,
feggcount,
flstages,
fdomstage,
fadultact,
labspecies,
llarvcount,
lpupcount,
leggcount,
ldomstage,
comments,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
processed,
creationdate,
creator,
editdate,
editor,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_organization_id,
p_inspsample_id,
p_fieldspecies,
p_flarvcount,
p_fpupcount,
p_feggcount,
p_flstages,
p_fdomstage,
p_fadultact,
p_labspecies,
p_llarvcount,
p_lpupcount,
p_leggcount,
p_ldomstage,
p_comments,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_processed,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_inspectionsample(
p_objectid bigint,
p_organization_id INTEGER,
p_insp_id uuid,
p_sampleid varchar,
p_processed smallint,
p_idbytech varchar,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.inspectionsample lv
WHERE lv.objectid = p_objectid
AND lv.organization_id = p_organization_id
AND lv.insp_id IS NOT DISTINCT FROM p_insp_id
AND lv.sampleid IS NOT DISTINCT FROM p_sampleid
AND lv.processed IS NOT DISTINCT FROM p_processed
AND lv.idbytech IS NOT DISTINCT FROM p_idbytech
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.inspectionsample
WHERE objectid = p_objectid AND organization_id = p_organization_id 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 fieldseeker.inspectionsample
WHERE objectid = p_objectid AND organization_id = p_organization_id;
-- Insert new version
INSERT INTO fieldseeker.inspectionsample (
objectid,
organization_id,
insp_id,
sampleid,
processed,
idbytech,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
creationdate,
creator,
editdate,
editor,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_organization_id,
p_insp_id,
p_sampleid,
p_processed,
p_idbytech,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_linelocation(
p_objectid bigint,
p_organization_id INTEGER,
p_name varchar,
p_zone varchar,
p_habitat varchar,
p_priority varchar,
p_usetype varchar,
p_active smallint,
p_description varchar,
p_accessdesc varchar,
p_comments varchar,
p_symbology varchar,
p_externalid varchar,
p_acres double precision,
p_nextactiondatescheduled timestamp,
p_larvinspectinterval smallint,
p_length_ft double precision,
p_width_ft double precision,
p_zone2 varchar,
p_locationnumber integer,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_lastinspectdate timestamp,
p_lastinspectbreeding varchar,
p_lastinspectavglarvae double precision,
p_lastinspectavgpupae double precision,
p_lastinspectlstages varchar,
p_lastinspectactiontaken varchar,
p_lastinspectfieldspecies varchar,
p_lasttreatdate timestamp,
p_lasttreatproduct varchar,
p_lasttreatqty double precision,
p_lasttreatqtyunit varchar,
p_hectares double precision,
p_lastinspectactivity varchar,
p_lasttreatactivity varchar,
p_length_meters double precision,
p_width_meters double precision,
p_lastinspectconditions varchar,
p_waterorigin varchar,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_jurisdiction varchar,
p_shape__length double precision,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.linelocation lv
WHERE lv.objectid = p_objectid
AND lv.organization_id = p_organization_id
AND lv.name IS NOT DISTINCT FROM p_name
AND lv.zone IS NOT DISTINCT FROM p_zone
AND lv.habitat IS NOT DISTINCT FROM p_habitat
AND lv.priority IS NOT DISTINCT FROM p_priority
AND lv.usetype IS NOT DISTINCT FROM p_usetype
AND lv.active IS NOT DISTINCT FROM p_active
AND lv.description IS NOT DISTINCT FROM p_description
AND lv.accessdesc IS NOT DISTINCT FROM p_accessdesc
AND lv.comments IS NOT DISTINCT FROM p_comments
AND lv.symbology IS NOT DISTINCT FROM p_symbology
AND lv.externalid IS NOT DISTINCT FROM p_externalid
AND lv.acres IS NOT DISTINCT FROM p_acres
AND lv.nextactiondatescheduled IS NOT DISTINCT FROM p_nextactiondatescheduled
AND lv.larvinspectinterval IS NOT DISTINCT FROM p_larvinspectinterval
AND lv.length_ft IS NOT DISTINCT FROM p_length_ft
AND lv.width_ft IS NOT DISTINCT FROM p_width_ft
AND lv.zone2 IS NOT DISTINCT FROM p_zone2
AND lv.locationnumber IS NOT DISTINCT FROM p_locationnumber
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.lastinspectdate IS NOT DISTINCT FROM p_lastinspectdate
AND lv.lastinspectbreeding IS NOT DISTINCT FROM p_lastinspectbreeding
AND lv.lastinspectavglarvae IS NOT DISTINCT FROM p_lastinspectavglarvae
AND lv.lastinspectavgpupae IS NOT DISTINCT FROM p_lastinspectavgpupae
AND lv.lastinspectlstages IS NOT DISTINCT FROM p_lastinspectlstages
AND lv.lastinspectactiontaken IS NOT DISTINCT FROM p_lastinspectactiontaken
AND lv.lastinspectfieldspecies IS NOT DISTINCT FROM p_lastinspectfieldspecies
AND lv.lasttreatdate IS NOT DISTINCT FROM p_lasttreatdate
AND lv.lasttreatproduct IS NOT DISTINCT FROM p_lasttreatproduct
AND lv.lasttreatqty IS NOT DISTINCT FROM p_lasttreatqty
AND lv.lasttreatqtyunit IS NOT DISTINCT FROM p_lasttreatqtyunit
AND lv.hectares IS NOT DISTINCT FROM p_hectares
AND lv.lastinspectactivity IS NOT DISTINCT FROM p_lastinspectactivity
AND lv.lasttreatactivity IS NOT DISTINCT FROM p_lasttreatactivity
AND lv.length_meters IS NOT DISTINCT FROM p_length_meters
AND lv.width_meters IS NOT DISTINCT FROM p_width_meters
AND lv.lastinspectconditions IS NOT DISTINCT FROM p_lastinspectconditions
AND lv.waterorigin IS NOT DISTINCT FROM p_waterorigin
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.jurisdiction IS NOT DISTINCT FROM p_jurisdiction
AND lv.shape__length IS NOT DISTINCT FROM p_shape__length
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.linelocation
WHERE objectid = p_objectid AND organization_id = p_organization_id 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 fieldseeker.linelocation
WHERE objectid = p_objectid AND organization_id = p_organization_id;
-- Insert new version
INSERT INTO fieldseeker.linelocation (
objectid,
organization_id,
name,
zone,
habitat,
priority,
usetype,
active,
description,
accessdesc,
comments,
symbology,
externalid,
acres,
nextactiondatescheduled,
larvinspectinterval,
length_ft,
width_ft,
zone2,
locationnumber,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
lastinspectdate,
lastinspectbreeding,
lastinspectavglarvae,
lastinspectavgpupae,
lastinspectlstages,
lastinspectactiontaken,
lastinspectfieldspecies,
lasttreatdate,
lasttreatproduct,
lasttreatqty,
lasttreatqtyunit,
hectares,
lastinspectactivity,
lasttreatactivity,
length_meters,
width_meters,
lastinspectconditions,
waterorigin,
creationdate,
creator,
editdate,
editor,
jurisdiction,
shape__length,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_organization_id,
p_name,
p_zone,
p_habitat,
p_priority,
p_usetype,
p_active,
p_description,
p_accessdesc,
p_comments,
p_symbology,
p_externalid,
p_acres,
p_nextactiondatescheduled,
p_larvinspectinterval,
p_length_ft,
p_width_ft,
p_zone2,
p_locationnumber,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_lastinspectdate,
p_lastinspectbreeding,
p_lastinspectavglarvae,
p_lastinspectavgpupae,
p_lastinspectlstages,
p_lastinspectactiontaken,
p_lastinspectfieldspecies,
p_lasttreatdate,
p_lasttreatproduct,
p_lasttreatqty,
p_lasttreatqtyunit,
p_hectares,
p_lastinspectactivity,
p_lasttreatactivity,
p_length_meters,
p_width_meters,
p_lastinspectconditions,
p_waterorigin,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_jurisdiction,
p_shape__length,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_locationtracking(
p_objectid bigint,
p_organization_id INTEGER,
p_accuracy double precision,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_globalid uuid,
p_fieldtech varchar,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.locationtracking lv
WHERE lv.objectid = p_objectid
AND lv.organization_id = p_organization_id
AND lv.accuracy IS NOT DISTINCT FROM p_accuracy
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.fieldtech IS NOT DISTINCT FROM p_fieldtech
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.locationtracking
WHERE objectid = p_objectid AND organization_id = p_organization_id 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 fieldseeker.locationtracking
WHERE objectid = p_objectid AND organization_id = p_organization_id;
-- Insert new version
INSERT INTO fieldseeker.locationtracking (
objectid,
organization_id,
accuracy,
created_user,
created_date,
last_edited_user,
last_edited_date,
globalid,
fieldtech,
creationdate,
creator,
editdate,
editor,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_organization_id,
p_accuracy,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_globalid,
p_fieldtech,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_mosquitoinspection(
p_objectid bigint,
p_organization_id INTEGER,
p_numdips smallint,
p_activity varchar,
p_breeding varchar,
p_totlarvae smallint,
p_totpupae smallint,
p_eggs smallint,
p_posdips smallint,
p_adultact varchar,
p_lstages varchar,
p_domstage varchar,
p_actiontaken varchar,
p_comments varchar,
p_avetemp double precision,
p_windspeed double precision,
p_raingauge double precision,
p_startdatetime timestamp,
p_enddatetime timestamp,
p_winddir varchar,
p_avglarvae double precision,
p_avgpupae double precision,
p_reviewed smallint,
p_reviewedby varchar,
p_revieweddate timestamp,
p_locationname varchar,
p_zone varchar,
p_recordstatus smallint,
p_zone2 varchar,
p_personalcontact smallint,
p_tirecount smallint,
p_cbcount smallint,
p_containercount smallint,
p_fieldspecies varchar,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_linelocid uuid,
p_pointlocid uuid,
p_polygonlocid uuid,
p_srid uuid,
p_fieldtech varchar,
p_larvaepresent smallint,
p_pupaepresent smallint,
p_sdid uuid,
p_sitecond varchar,
p_positivecontainercount smallint,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_jurisdiction varchar,
p_visualmonitoring smallint,
p_vmcomments varchar,
p_adminaction varchar,
p_ptaid uuid,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.mosquitoinspection lv
WHERE lv.objectid = p_objectid
AND lv.organization_id = p_organization_id
AND lv.numdips IS NOT DISTINCT FROM p_numdips
AND lv.activity IS NOT DISTINCT FROM p_activity
AND lv.breeding IS NOT DISTINCT FROM p_breeding
AND lv.totlarvae IS NOT DISTINCT FROM p_totlarvae
AND lv.totpupae IS NOT DISTINCT FROM p_totpupae
AND lv.eggs IS NOT DISTINCT FROM p_eggs
AND lv.posdips IS NOT DISTINCT FROM p_posdips
AND lv.adultact IS NOT DISTINCT FROM p_adultact
AND lv.lstages IS NOT DISTINCT FROM p_lstages
AND lv.domstage IS NOT DISTINCT FROM p_domstage
AND lv.actiontaken IS NOT DISTINCT FROM p_actiontaken
AND lv.comments IS NOT DISTINCT FROM p_comments
AND lv.avetemp IS NOT DISTINCT FROM p_avetemp
AND lv.windspeed IS NOT DISTINCT FROM p_windspeed
AND lv.raingauge IS NOT DISTINCT FROM p_raingauge
AND lv.startdatetime IS NOT DISTINCT FROM p_startdatetime
AND lv.enddatetime IS NOT DISTINCT FROM p_enddatetime
AND lv.winddir IS NOT DISTINCT FROM p_winddir
AND lv.avglarvae IS NOT DISTINCT FROM p_avglarvae
AND lv.avgpupae IS NOT DISTINCT FROM p_avgpupae
AND lv.reviewed IS NOT DISTINCT FROM p_reviewed
AND lv.reviewedby IS NOT DISTINCT FROM p_reviewedby
AND lv.revieweddate IS NOT DISTINCT FROM p_revieweddate
AND lv.locationname IS NOT DISTINCT FROM p_locationname
AND lv.zone IS NOT DISTINCT FROM p_zone
AND lv.recordstatus IS NOT DISTINCT FROM p_recordstatus
AND lv.zone2 IS NOT DISTINCT FROM p_zone2
AND lv.personalcontact IS NOT DISTINCT FROM p_personalcontact
AND lv.tirecount IS NOT DISTINCT FROM p_tirecount
AND lv.cbcount IS NOT DISTINCT FROM p_cbcount
AND lv.containercount IS NOT DISTINCT FROM p_containercount
AND lv.fieldspecies IS NOT DISTINCT FROM p_fieldspecies
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.linelocid IS NOT DISTINCT FROM p_linelocid
AND lv.pointlocid IS NOT DISTINCT FROM p_pointlocid
AND lv.polygonlocid IS NOT DISTINCT FROM p_polygonlocid
AND lv.srid IS NOT DISTINCT FROM p_srid
AND lv.fieldtech IS NOT DISTINCT FROM p_fieldtech
AND lv.larvaepresent IS NOT DISTINCT FROM p_larvaepresent
AND lv.pupaepresent IS NOT DISTINCT FROM p_pupaepresent
AND lv.sdid IS NOT DISTINCT FROM p_sdid
AND lv.sitecond IS NOT DISTINCT FROM p_sitecond
AND lv.positivecontainercount IS NOT DISTINCT FROM p_positivecontainercount
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.jurisdiction IS NOT DISTINCT FROM p_jurisdiction
AND lv.visualmonitoring IS NOT DISTINCT FROM p_visualmonitoring
AND lv.vmcomments IS NOT DISTINCT FROM p_vmcomments
AND lv.adminaction IS NOT DISTINCT FROM p_adminaction
AND lv.ptaid IS NOT DISTINCT FROM p_ptaid
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.mosquitoinspection
WHERE objectid = p_objectid AND organization_id = p_organization_id 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 fieldseeker.mosquitoinspection
WHERE objectid = p_objectid AND organization_id = p_organization_id;
-- Insert new version
INSERT INTO fieldseeker.mosquitoinspection (
objectid,
organization_id,
numdips,
activity,
breeding,
totlarvae,
totpupae,
eggs,
posdips,
adultact,
lstages,
domstage,
actiontaken,
comments,
avetemp,
windspeed,
raingauge,
startdatetime,
enddatetime,
winddir,
avglarvae,
avgpupae,
reviewed,
reviewedby,
revieweddate,
locationname,
zone,
recordstatus,
zone2,
personalcontact,
tirecount,
cbcount,
containercount,
fieldspecies,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
linelocid,
pointlocid,
polygonlocid,
srid,
fieldtech,
larvaepresent,
pupaepresent,
sdid,
sitecond,
positivecontainercount,
creationdate,
creator,
editdate,
editor,
jurisdiction,
visualmonitoring,
vmcomments,
adminaction,
ptaid,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_organization_id,
p_numdips,
p_activity,
p_breeding,
p_totlarvae,
p_totpupae,
p_eggs,
p_posdips,
p_adultact,
p_lstages,
p_domstage,
p_actiontaken,
p_comments,
p_avetemp,
p_windspeed,
p_raingauge,
p_startdatetime,
p_enddatetime,
p_winddir,
p_avglarvae,
p_avgpupae,
p_reviewed,
p_reviewedby,
p_revieweddate,
p_locationname,
p_zone,
p_recordstatus,
p_zone2,
p_personalcontact,
p_tirecount,
p_cbcount,
p_containercount,
p_fieldspecies,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_linelocid,
p_pointlocid,
p_polygonlocid,
p_srid,
p_fieldtech,
p_larvaepresent,
p_pupaepresent,
p_sdid,
p_sitecond,
p_positivecontainercount,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_jurisdiction,
p_visualmonitoring,
p_vmcomments,
p_adminaction,
p_ptaid,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_pointlocation(
p_objectid bigint,
p_organization_id INTEGER,
p_name varchar,
p_zone varchar,
p_habitat varchar,
p_priority varchar,
p_usetype varchar,
p_active smallint,
p_description varchar,
p_accessdesc varchar,
p_comments varchar,
p_symbology varchar,
p_externalid varchar,
p_nextactiondatescheduled timestamp,
p_larvinspectinterval smallint,
p_zone2 varchar,
p_locationnumber integer,
p_globalid uuid,
p_stype varchar,
p_lastinspectdate timestamp,
p_lastinspectbreeding varchar,
p_lastinspectavglarvae double precision,
p_lastinspectavgpupae double precision,
p_lastinspectlstages varchar,
p_lastinspectactiontaken varchar,
p_lastinspectfieldspecies varchar,
p_lasttreatdate timestamp,
p_lasttreatproduct varchar,
p_lasttreatqty double precision,
p_lasttreatqtyunit varchar,
p_lastinspectactivity varchar,
p_lasttreatactivity varchar,
p_lastinspectconditions varchar,
p_waterorigin varchar,
p_x double precision,
p_y double precision,
p_assignedtech varchar,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_jurisdiction varchar,
p_deactivate_reason varchar,
p_scalarpriority integer,
p_sourcestatus varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.pointlocation lv
WHERE lv.objectid = p_objectid
AND lv.organization_id = p_organization_id
AND lv.name IS NOT DISTINCT FROM p_name
AND lv.zone IS NOT DISTINCT FROM p_zone
AND lv.habitat IS NOT DISTINCT FROM p_habitat
AND lv.priority IS NOT DISTINCT FROM p_priority
AND lv.usetype IS NOT DISTINCT FROM p_usetype
AND lv.active IS NOT DISTINCT FROM p_active
AND lv.description IS NOT DISTINCT FROM p_description
AND lv.accessdesc IS NOT DISTINCT FROM p_accessdesc
AND lv.comments IS NOT DISTINCT FROM p_comments
AND lv.symbology IS NOT DISTINCT FROM p_symbology
AND lv.externalid IS NOT DISTINCT FROM p_externalid
AND lv.nextactiondatescheduled IS NOT DISTINCT FROM p_nextactiondatescheduled
AND lv.larvinspectinterval IS NOT DISTINCT FROM p_larvinspectinterval
AND lv.zone2 IS NOT DISTINCT FROM p_zone2
AND lv.locationnumber IS NOT DISTINCT FROM p_locationnumber
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.stype IS NOT DISTINCT FROM p_stype
AND lv.lastinspectdate IS NOT DISTINCT FROM p_lastinspectdate
AND lv.lastinspectbreeding IS NOT DISTINCT FROM p_lastinspectbreeding
AND lv.lastinspectavglarvae IS NOT DISTINCT FROM p_lastinspectavglarvae
AND lv.lastinspectavgpupae IS NOT DISTINCT FROM p_lastinspectavgpupae
AND lv.lastinspectlstages IS NOT DISTINCT FROM p_lastinspectlstages
AND lv.lastinspectactiontaken IS NOT DISTINCT FROM p_lastinspectactiontaken
AND lv.lastinspectfieldspecies IS NOT DISTINCT FROM p_lastinspectfieldspecies
AND lv.lasttreatdate IS NOT DISTINCT FROM p_lasttreatdate
AND lv.lasttreatproduct IS NOT DISTINCT FROM p_lasttreatproduct
AND lv.lasttreatqty IS NOT DISTINCT FROM p_lasttreatqty
AND lv.lasttreatqtyunit IS NOT DISTINCT FROM p_lasttreatqtyunit
AND lv.lastinspectactivity IS NOT DISTINCT FROM p_lastinspectactivity
AND lv.lasttreatactivity IS NOT DISTINCT FROM p_lasttreatactivity
AND lv.lastinspectconditions IS NOT DISTINCT FROM p_lastinspectconditions
AND lv.waterorigin IS NOT DISTINCT FROM p_waterorigin
AND lv.x IS NOT DISTINCT FROM p_x
AND lv.y IS NOT DISTINCT FROM p_y
AND lv.assignedtech IS NOT DISTINCT FROM p_assignedtech
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.jurisdiction IS NOT DISTINCT FROM p_jurisdiction
AND lv.deactivate_reason IS NOT DISTINCT FROM p_deactivate_reason
AND lv.scalarpriority IS NOT DISTINCT FROM p_scalarpriority
AND lv.sourcestatus IS NOT DISTINCT FROM p_sourcestatus
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.pointlocation
WHERE objectid = p_objectid AND organization_id = p_organization_id 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 fieldseeker.pointlocation
WHERE objectid = p_objectid AND organization_id = p_organization_id;
-- Insert new version
INSERT INTO fieldseeker.pointlocation (
objectid,
organization_id,
name,
zone,
habitat,
priority,
usetype,
active,
description,
accessdesc,
comments,
symbology,
externalid,
nextactiondatescheduled,
larvinspectinterval,
zone2,
locationnumber,
globalid,
stype,
lastinspectdate,
lastinspectbreeding,
lastinspectavglarvae,
lastinspectavgpupae,
lastinspectlstages,
lastinspectactiontaken,
lastinspectfieldspecies,
lasttreatdate,
lasttreatproduct,
lasttreatqty,
lasttreatqtyunit,
lastinspectactivity,
lasttreatactivity,
lastinspectconditions,
waterorigin,
x,
y,
assignedtech,
creationdate,
creator,
editdate,
editor,
jurisdiction,
deactivate_reason,
scalarpriority,
sourcestatus,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_organization_id,
p_name,
p_zone,
p_habitat,
p_priority,
p_usetype,
p_active,
p_description,
p_accessdesc,
p_comments,
p_symbology,
p_externalid,
p_nextactiondatescheduled,
p_larvinspectinterval,
p_zone2,
p_locationnumber,
p_globalid,
p_stype,
p_lastinspectdate,
p_lastinspectbreeding,
p_lastinspectavglarvae,
p_lastinspectavgpupae,
p_lastinspectlstages,
p_lastinspectactiontaken,
p_lastinspectfieldspecies,
p_lasttreatdate,
p_lasttreatproduct,
p_lasttreatqty,
p_lasttreatqtyunit,
p_lastinspectactivity,
p_lasttreatactivity,
p_lastinspectconditions,
p_waterorigin,
p_x,
p_y,
p_assignedtech,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_jurisdiction,
p_deactivate_reason,
p_scalarpriority,
p_sourcestatus,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_polygonlocation(
p_objectid bigint,
p_organization_id INTEGER,
p_name varchar,
p_zone varchar,
p_habitat varchar,
p_priority varchar,
p_usetype varchar,
p_active smallint,
p_description varchar,
p_accessdesc varchar,
p_comments varchar,
p_symbology varchar,
p_externalid varchar,
p_acres double precision,
p_nextactiondatescheduled timestamp,
p_larvinspectinterval smallint,
p_zone2 varchar,
p_locationnumber integer,
p_globalid uuid,
p_lastinspectdate timestamp,
p_lastinspectbreeding varchar,
p_lastinspectavglarvae double precision,
p_lastinspectavgpupae double precision,
p_lastinspectlstages varchar,
p_lastinspectactiontaken varchar,
p_lastinspectfieldspecies varchar,
p_lasttreatdate timestamp,
p_lasttreatproduct varchar,
p_lasttreatqty double precision,
p_lasttreatqtyunit varchar,
p_hectares double precision,
p_lastinspectactivity varchar,
p_lasttreatactivity varchar,
p_lastinspectconditions varchar,
p_waterorigin varchar,
p_filter varchar,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_jurisdiction varchar,
p_shape__area double precision,
p_shape__length double precision,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.polygonlocation lv
WHERE lv.objectid = p_objectid
AND lv.organization_id = p_organization_id
AND lv.name IS NOT DISTINCT FROM p_name
AND lv.zone IS NOT DISTINCT FROM p_zone
AND lv.habitat IS NOT DISTINCT FROM p_habitat
AND lv.priority IS NOT DISTINCT FROM p_priority
AND lv.usetype IS NOT DISTINCT FROM p_usetype
AND lv.active IS NOT DISTINCT FROM p_active
AND lv.description IS NOT DISTINCT FROM p_description
AND lv.accessdesc IS NOT DISTINCT FROM p_accessdesc
AND lv.comments IS NOT DISTINCT FROM p_comments
AND lv.symbology IS NOT DISTINCT FROM p_symbology
AND lv.externalid IS NOT DISTINCT FROM p_externalid
AND lv.acres IS NOT DISTINCT FROM p_acres
AND lv.nextactiondatescheduled IS NOT DISTINCT FROM p_nextactiondatescheduled
AND lv.larvinspectinterval IS NOT DISTINCT FROM p_larvinspectinterval
AND lv.zone2 IS NOT DISTINCT FROM p_zone2
AND lv.locationnumber IS NOT DISTINCT FROM p_locationnumber
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.lastinspectdate IS NOT DISTINCT FROM p_lastinspectdate
AND lv.lastinspectbreeding IS NOT DISTINCT FROM p_lastinspectbreeding
AND lv.lastinspectavglarvae IS NOT DISTINCT FROM p_lastinspectavglarvae
AND lv.lastinspectavgpupae IS NOT DISTINCT FROM p_lastinspectavgpupae
AND lv.lastinspectlstages IS NOT DISTINCT FROM p_lastinspectlstages
AND lv.lastinspectactiontaken IS NOT DISTINCT FROM p_lastinspectactiontaken
AND lv.lastinspectfieldspecies IS NOT DISTINCT FROM p_lastinspectfieldspecies
AND lv.lasttreatdate IS NOT DISTINCT FROM p_lasttreatdate
AND lv.lasttreatproduct IS NOT DISTINCT FROM p_lasttreatproduct
AND lv.lasttreatqty IS NOT DISTINCT FROM p_lasttreatqty
AND lv.lasttreatqtyunit IS NOT DISTINCT FROM p_lasttreatqtyunit
AND lv.hectares IS NOT DISTINCT FROM p_hectares
AND lv.lastinspectactivity IS NOT DISTINCT FROM p_lastinspectactivity
AND lv.lasttreatactivity IS NOT DISTINCT FROM p_lasttreatactivity
AND lv.lastinspectconditions IS NOT DISTINCT FROM p_lastinspectconditions
AND lv.waterorigin IS NOT DISTINCT FROM p_waterorigin
AND lv.filter IS NOT DISTINCT FROM p_filter
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.jurisdiction IS NOT DISTINCT FROM p_jurisdiction
AND lv.shape__area IS NOT DISTINCT FROM p_shape__area
AND lv.shape__length IS NOT DISTINCT FROM p_shape__length
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.polygonlocation
WHERE objectid = p_objectid AND organization_id = p_organization_id 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 fieldseeker.polygonlocation
WHERE objectid = p_objectid AND organization_id = p_organization_id;
-- Insert new version
INSERT INTO fieldseeker.polygonlocation (
objectid,
organization_id,
name,
zone,
habitat,
priority,
usetype,
active,
description,
accessdesc,
comments,
symbology,
externalid,
acres,
nextactiondatescheduled,
larvinspectinterval,
zone2,
locationnumber,
globalid,
lastinspectdate,
lastinspectbreeding,
lastinspectavglarvae,
lastinspectavgpupae,
lastinspectlstages,
lastinspectactiontaken,
lastinspectfieldspecies,
lasttreatdate,
lasttreatproduct,
lasttreatqty,
lasttreatqtyunit,
hectares,
lastinspectactivity,
lasttreatactivity,
lastinspectconditions,
waterorigin,
filter,
creationdate,
creator,
editdate,
editor,
jurisdiction,
shape__area,
shape__length,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_organization_id,
p_name,
p_zone,
p_habitat,
p_priority,
p_usetype,
p_active,
p_description,
p_accessdesc,
p_comments,
p_symbology,
p_externalid,
p_acres,
p_nextactiondatescheduled,
p_larvinspectinterval,
p_zone2,
p_locationnumber,
p_globalid,
p_lastinspectdate,
p_lastinspectbreeding,
p_lastinspectavglarvae,
p_lastinspectavgpupae,
p_lastinspectlstages,
p_lastinspectactiontaken,
p_lastinspectfieldspecies,
p_lasttreatdate,
p_lasttreatproduct,
p_lasttreatqty,
p_lasttreatqtyunit,
p_hectares,
p_lastinspectactivity,
p_lasttreatactivity,
p_lastinspectconditions,
p_waterorigin,
p_filter,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_jurisdiction,
p_shape__area,
p_shape__length,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_pooldetail(
p_objectid bigint,
p_organization_id INTEGER,
p_trapdata_id uuid,
p_pool_id uuid,
p_species varchar,
p_females smallint,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.pooldetail lv
WHERE lv.objectid = p_objectid
AND lv.organization_id = p_organization_id
AND lv.trapdata_id IS NOT DISTINCT FROM p_trapdata_id
AND lv.pool_id IS NOT DISTINCT FROM p_pool_id
AND lv.species IS NOT DISTINCT FROM p_species
AND lv.females IS NOT DISTINCT FROM p_females
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.pooldetail
WHERE objectid = p_objectid AND organization_id = p_organization_id 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 fieldseeker.pooldetail
WHERE objectid = p_objectid AND organization_id = p_organization_id;
-- Insert new version
INSERT INTO fieldseeker.pooldetail (
objectid,
organization_id,
trapdata_id,
pool_id,
species,
females,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
creationdate,
creator,
editdate,
editor,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_organization_id,
p_trapdata_id,
p_pool_id,
p_species,
p_females,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_pool(
p_objectid bigint,
p_organization_id INTEGER,
p_trapdata_id uuid,
p_datesent timestamp,
p_survtech varchar,
p_datetested timestamp,
p_testtech varchar,
p_comments varchar,
p_sampleid varchar,
p_processed smallint,
p_lab_id uuid,
p_testmethod varchar,
p_diseasetested varchar,
p_diseasepos varchar,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_lab varchar,
p_poolyear smallint,
p_gatewaysync smallint,
p_vectorsurvcollectionid varchar,
p_vectorsurvpoolid varchar,
p_vectorsurvtrapdataid varchar,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.pool lv
WHERE lv.objectid = p_objectid
AND lv.organization_id = p_organization_id
AND lv.trapdata_id IS NOT DISTINCT FROM p_trapdata_id
AND lv.datesent IS NOT DISTINCT FROM p_datesent
AND lv.survtech IS NOT DISTINCT FROM p_survtech
AND lv.datetested IS NOT DISTINCT FROM p_datetested
AND lv.testtech IS NOT DISTINCT FROM p_testtech
AND lv.comments IS NOT DISTINCT FROM p_comments
AND lv.sampleid IS NOT DISTINCT FROM p_sampleid
AND lv.processed IS NOT DISTINCT FROM p_processed
AND lv.lab_id IS NOT DISTINCT FROM p_lab_id
AND lv.testmethod IS NOT DISTINCT FROM p_testmethod
AND lv.diseasetested IS NOT DISTINCT FROM p_diseasetested
AND lv.diseasepos IS NOT DISTINCT FROM p_diseasepos
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.lab IS NOT DISTINCT FROM p_lab
AND lv.poolyear IS NOT DISTINCT FROM p_poolyear
AND lv.gatewaysync IS NOT DISTINCT FROM p_gatewaysync
AND lv.vectorsurvcollectionid IS NOT DISTINCT FROM p_vectorsurvcollectionid
AND lv.vectorsurvpoolid IS NOT DISTINCT FROM p_vectorsurvpoolid
AND lv.vectorsurvtrapdataid IS NOT DISTINCT FROM p_vectorsurvtrapdataid
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.pool
WHERE objectid = p_objectid AND organization_id = p_organization_id 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 fieldseeker.pool
WHERE objectid = p_objectid AND organization_id = p_organization_id;
-- Insert new version
INSERT INTO fieldseeker.pool (
objectid,
organization_id,
trapdata_id,
datesent,
survtech,
datetested,
testtech,
comments,
sampleid,
processed,
lab_id,
testmethod,
diseasetested,
diseasepos,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
lab,
poolyear,
gatewaysync,
vectorsurvcollectionid,
vectorsurvpoolid,
vectorsurvtrapdataid,
creationdate,
creator,
editdate,
editor,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_organization_id,
p_trapdata_id,
p_datesent,
p_survtech,
p_datetested,
p_testtech,
p_comments,
p_sampleid,
p_processed,
p_lab_id,
p_testmethod,
p_diseasetested,
p_diseasepos,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_lab,
p_poolyear,
p_gatewaysync,
p_vectorsurvcollectionid,
p_vectorsurvpoolid,
p_vectorsurvtrapdataid,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_proposedtreatmentarea(
p_objectid bigint,
p_organization_id INTEGER,
p_method varchar,
p_comments varchar,
p_zone varchar,
p_reviewed smallint,
p_reviewedby varchar,
p_revieweddate timestamp,
p_zone2 varchar,
p_completeddate timestamp,
p_completedby varchar,
p_completed smallint,
p_issprayroute smallint,
p_name varchar,
p_acres double precision,
p_globalid uuid,
p_exported smallint,
p_targetproduct varchar,
p_targetapprate double precision,
p_hectares double precision,
p_lasttreatactivity varchar,
p_lasttreatdate timestamp,
p_lasttreatproduct varchar,
p_lasttreatqty double precision,
p_lasttreatqtyunit varchar,
p_priority varchar,
p_duedate timestamp,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_targetspecies varchar,
p_shape__area double precision,
p_shape__length double precision,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.proposedtreatmentarea lv
WHERE lv.objectid = p_objectid
AND lv.organization_id = p_organization_id
AND lv.method IS NOT DISTINCT FROM p_method
AND lv.comments IS NOT DISTINCT FROM p_comments
AND lv.zone IS NOT DISTINCT FROM p_zone
AND lv.reviewed IS NOT DISTINCT FROM p_reviewed
AND lv.reviewedby IS NOT DISTINCT FROM p_reviewedby
AND lv.revieweddate IS NOT DISTINCT FROM p_revieweddate
AND lv.zone2 IS NOT DISTINCT FROM p_zone2
AND lv.completeddate IS NOT DISTINCT FROM p_completeddate
AND lv.completedby IS NOT DISTINCT FROM p_completedby
AND lv.completed IS NOT DISTINCT FROM p_completed
AND lv.issprayroute IS NOT DISTINCT FROM p_issprayroute
AND lv.name IS NOT DISTINCT FROM p_name
AND lv.acres IS NOT DISTINCT FROM p_acres
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.exported IS NOT DISTINCT FROM p_exported
AND lv.targetproduct IS NOT DISTINCT FROM p_targetproduct
AND lv.targetapprate IS NOT DISTINCT FROM p_targetapprate
AND lv.hectares IS NOT DISTINCT FROM p_hectares
AND lv.lasttreatactivity IS NOT DISTINCT FROM p_lasttreatactivity
AND lv.lasttreatdate IS NOT DISTINCT FROM p_lasttreatdate
AND lv.lasttreatproduct IS NOT DISTINCT FROM p_lasttreatproduct
AND lv.lasttreatqty IS NOT DISTINCT FROM p_lasttreatqty
AND lv.lasttreatqtyunit IS NOT DISTINCT FROM p_lasttreatqtyunit
AND lv.priority IS NOT DISTINCT FROM p_priority
AND lv.duedate IS NOT DISTINCT FROM p_duedate
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.targetspecies IS NOT DISTINCT FROM p_targetspecies
AND lv.shape__area IS NOT DISTINCT FROM p_shape__area
AND lv.shape__length IS NOT DISTINCT FROM p_shape__length
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.proposedtreatmentarea
WHERE objectid = p_objectid AND organization_id = p_organization_id 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 fieldseeker.proposedtreatmentarea
WHERE objectid = p_objectid AND organization_id = p_organization_id;
-- Insert new version
INSERT INTO fieldseeker.proposedtreatmentarea (
objectid,
organization_id,
method,
comments,
zone,
reviewed,
reviewedby,
revieweddate,
zone2,
completeddate,
completedby,
completed,
issprayroute,
name,
acres,
globalid,
exported,
targetproduct,
targetapprate,
hectares,
lasttreatactivity,
lasttreatdate,
lasttreatproduct,
lasttreatqty,
lasttreatqtyunit,
priority,
duedate,
creationdate,
creator,
editdate,
editor,
targetspecies,
shape__area,
shape__length,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_organization_id,
p_method,
p_comments,
p_zone,
p_reviewed,
p_reviewedby,
p_revieweddate,
p_zone2,
p_completeddate,
p_completedby,
p_completed,
p_issprayroute,
p_name,
p_acres,
p_globalid,
p_exported,
p_targetproduct,
p_targetapprate,
p_hectares,
p_lasttreatactivity,
p_lasttreatdate,
p_lasttreatproduct,
p_lasttreatqty,
p_lasttreatqtyunit,
p_priority,
p_duedate,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_targetspecies,
p_shape__area,
p_shape__length,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_qamosquitoinspection(
p_objectid bigint,
p_organization_id INTEGER,
p_posdips smallint,
p_actiontaken varchar,
p_comments varchar,
p_avetemp double precision,
p_windspeed double precision,
p_raingauge double precision,
p_globalid uuid,
p_startdatetime timestamp,
p_enddatetime timestamp,
p_winddir varchar,
p_reviewed smallint,
p_reviewedby varchar,
p_revieweddate timestamp,
p_locationname varchar,
p_zone varchar,
p_recordstatus smallint,
p_zone2 varchar,
p_lr smallint,
p_negdips smallint,
p_totalacres double precision,
p_acresbreeding double precision,
p_fish smallint,
p_sitetype varchar,
p_breedingpotential varchar,
p_movingwater smallint,
p_nowaterever smallint,
p_mosquitohabitat varchar,
p_habvalue1 smallint,
p_habvalue1percent smallint,
p_habvalue2 smallint,
p_habvalue2percent smallint,
p_potential smallint,
p_larvaepresent smallint,
p_larvaeinsidetreatedarea smallint,
p_larvaeoutsidetreatedarea smallint,
p_larvaereason varchar,
p_aquaticorganisms varchar,
p_vegetation varchar,
p_sourcereduction varchar,
p_waterpresent smallint,
p_watermovement1 varchar,
p_watermovement1percent smallint,
p_watermovement2 varchar,
p_watermovement2percent smallint,
p_soilconditions varchar,
p_waterduration varchar,
p_watersource varchar,
p_waterconditions varchar,
p_adultactivity smallint,
p_linelocid uuid,
p_pointlocid uuid,
p_polygonlocid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_fieldtech varchar,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.qamosquitoinspection lv
WHERE lv.objectid = p_objectid
AND lv.organization_id = p_organization_id
AND lv.posdips IS NOT DISTINCT FROM p_posdips
AND lv.actiontaken IS NOT DISTINCT FROM p_actiontaken
AND lv.comments IS NOT DISTINCT FROM p_comments
AND lv.avetemp IS NOT DISTINCT FROM p_avetemp
AND lv.windspeed IS NOT DISTINCT FROM p_windspeed
AND lv.raingauge IS NOT DISTINCT FROM p_raingauge
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.startdatetime IS NOT DISTINCT FROM p_startdatetime
AND lv.enddatetime IS NOT DISTINCT FROM p_enddatetime
AND lv.winddir IS NOT DISTINCT FROM p_winddir
AND lv.reviewed IS NOT DISTINCT FROM p_reviewed
AND lv.reviewedby IS NOT DISTINCT FROM p_reviewedby
AND lv.revieweddate IS NOT DISTINCT FROM p_revieweddate
AND lv.locationname IS NOT DISTINCT FROM p_locationname
AND lv.zone IS NOT DISTINCT FROM p_zone
AND lv.recordstatus IS NOT DISTINCT FROM p_recordstatus
AND lv.zone2 IS NOT DISTINCT FROM p_zone2
AND lv.lr IS NOT DISTINCT FROM p_lr
AND lv.negdips IS NOT DISTINCT FROM p_negdips
AND lv.totalacres IS NOT DISTINCT FROM p_totalacres
AND lv.acresbreeding IS NOT DISTINCT FROM p_acresbreeding
AND lv.fish IS NOT DISTINCT FROM p_fish
AND lv.sitetype IS NOT DISTINCT FROM p_sitetype
AND lv.breedingpotential IS NOT DISTINCT FROM p_breedingpotential
AND lv.movingwater IS NOT DISTINCT FROM p_movingwater
AND lv.nowaterever IS NOT DISTINCT FROM p_nowaterever
AND lv.mosquitohabitat IS NOT DISTINCT FROM p_mosquitohabitat
AND lv.habvalue1 IS NOT DISTINCT FROM p_habvalue1
AND lv.habvalue1percent IS NOT DISTINCT FROM p_habvalue1percent
AND lv.habvalue2 IS NOT DISTINCT FROM p_habvalue2
AND lv.habvalue2percent IS NOT DISTINCT FROM p_habvalue2percent
AND lv.potential IS NOT DISTINCT FROM p_potential
AND lv.larvaepresent IS NOT DISTINCT FROM p_larvaepresent
AND lv.larvaeinsidetreatedarea IS NOT DISTINCT FROM p_larvaeinsidetreatedarea
AND lv.larvaeoutsidetreatedarea IS NOT DISTINCT FROM p_larvaeoutsidetreatedarea
AND lv.larvaereason IS NOT DISTINCT FROM p_larvaereason
AND lv.aquaticorganisms IS NOT DISTINCT FROM p_aquaticorganisms
AND lv.vegetation IS NOT DISTINCT FROM p_vegetation
AND lv.sourcereduction IS NOT DISTINCT FROM p_sourcereduction
AND lv.waterpresent IS NOT DISTINCT FROM p_waterpresent
AND lv.watermovement1 IS NOT DISTINCT FROM p_watermovement1
AND lv.watermovement1percent IS NOT DISTINCT FROM p_watermovement1percent
AND lv.watermovement2 IS NOT DISTINCT FROM p_watermovement2
AND lv.watermovement2percent IS NOT DISTINCT FROM p_watermovement2percent
AND lv.soilconditions IS NOT DISTINCT FROM p_soilconditions
AND lv.waterduration IS NOT DISTINCT FROM p_waterduration
AND lv.watersource IS NOT DISTINCT FROM p_watersource
AND lv.waterconditions IS NOT DISTINCT FROM p_waterconditions
AND lv.adultactivity IS NOT DISTINCT FROM p_adultactivity
AND lv.linelocid IS NOT DISTINCT FROM p_linelocid
AND lv.pointlocid IS NOT DISTINCT FROM p_pointlocid
AND lv.polygonlocid IS NOT DISTINCT FROM p_polygonlocid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.fieldtech IS NOT DISTINCT FROM p_fieldtech
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.qamosquitoinspection
WHERE objectid = p_objectid AND organization_id = p_organization_id 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 fieldseeker.qamosquitoinspection
WHERE objectid = p_objectid AND organization_id = p_organization_id;
-- Insert new version
INSERT INTO fieldseeker.qamosquitoinspection (
objectid,
organization_id,
posdips,
actiontaken,
comments,
avetemp,
windspeed,
raingauge,
globalid,
startdatetime,
enddatetime,
winddir,
reviewed,
reviewedby,
revieweddate,
locationname,
zone,
recordstatus,
zone2,
lr,
negdips,
totalacres,
acresbreeding,
fish,
sitetype,
breedingpotential,
movingwater,
nowaterever,
mosquitohabitat,
habvalue1,
habvalue1percent,
habvalue2,
habvalue2percent,
potential,
larvaepresent,
larvaeinsidetreatedarea,
larvaeoutsidetreatedarea,
larvaereason,
aquaticorganisms,
vegetation,
sourcereduction,
waterpresent,
watermovement1,
watermovement1percent,
watermovement2,
watermovement2percent,
soilconditions,
waterduration,
watersource,
waterconditions,
adultactivity,
linelocid,
pointlocid,
polygonlocid,
created_user,
created_date,
last_edited_user,
last_edited_date,
fieldtech,
creationdate,
creator,
editdate,
editor,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_organization_id,
p_posdips,
p_actiontaken,
p_comments,
p_avetemp,
p_windspeed,
p_raingauge,
p_globalid,
p_startdatetime,
p_enddatetime,
p_winddir,
p_reviewed,
p_reviewedby,
p_revieweddate,
p_locationname,
p_zone,
p_recordstatus,
p_zone2,
p_lr,
p_negdips,
p_totalacres,
p_acresbreeding,
p_fish,
p_sitetype,
p_breedingpotential,
p_movingwater,
p_nowaterever,
p_mosquitohabitat,
p_habvalue1,
p_habvalue1percent,
p_habvalue2,
p_habvalue2percent,
p_potential,
p_larvaepresent,
p_larvaeinsidetreatedarea,
p_larvaeoutsidetreatedarea,
p_larvaereason,
p_aquaticorganisms,
p_vegetation,
p_sourcereduction,
p_waterpresent,
p_watermovement1,
p_watermovement1percent,
p_watermovement2,
p_watermovement2percent,
p_soilconditions,
p_waterduration,
p_watersource,
p_waterconditions,
p_adultactivity,
p_linelocid,
p_pointlocid,
p_polygonlocid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_fieldtech,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_rodentlocation(
p_objectid bigint,
p_organization_id INTEGER,
p_locationname varchar,
p_zone varchar,
p_zone2 varchar,
p_habitat varchar,
p_priority varchar,
p_usetype varchar,
p_active smallint,
p_description varchar,
p_accessdesc varchar,
p_comments varchar,
p_symbology varchar,
p_externalid varchar,
p_nextactiondatescheduled timestamp,
p_locationnumber integer,
p_lastinspectdate timestamp,
p_lastinspectspecies varchar,
p_lastinspectaction varchar,
p_lastinspectconditions varchar,
p_lastinspectrodentevidence varchar,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_jurisdiction varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.rodentlocation lv
WHERE lv.objectid = p_objectid
AND lv.organization_id = p_organization_id
AND lv.locationname IS NOT DISTINCT FROM p_locationname
AND lv.zone IS NOT DISTINCT FROM p_zone
AND lv.zone2 IS NOT DISTINCT FROM p_zone2
AND lv.habitat IS NOT DISTINCT FROM p_habitat
AND lv.priority IS NOT DISTINCT FROM p_priority
AND lv.usetype IS NOT DISTINCT FROM p_usetype
AND lv.active IS NOT DISTINCT FROM p_active
AND lv.description IS NOT DISTINCT FROM p_description
AND lv.accessdesc IS NOT DISTINCT FROM p_accessdesc
AND lv.comments IS NOT DISTINCT FROM p_comments
AND lv.symbology IS NOT DISTINCT FROM p_symbology
AND lv.externalid IS NOT DISTINCT FROM p_externalid
AND lv.nextactiondatescheduled IS NOT DISTINCT FROM p_nextactiondatescheduled
AND lv.locationnumber IS NOT DISTINCT FROM p_locationnumber
AND lv.lastinspectdate IS NOT DISTINCT FROM p_lastinspectdate
AND lv.lastinspectspecies IS NOT DISTINCT FROM p_lastinspectspecies
AND lv.lastinspectaction IS NOT DISTINCT FROM p_lastinspectaction
AND lv.lastinspectconditions IS NOT DISTINCT FROM p_lastinspectconditions
AND lv.lastinspectrodentevidence IS NOT DISTINCT FROM p_lastinspectrodentevidence
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.jurisdiction IS NOT DISTINCT FROM p_jurisdiction
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.rodentlocation
WHERE objectid = p_objectid AND organization_id = p_organization_id 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 fieldseeker.rodentlocation
WHERE objectid = p_objectid AND organization_id = p_organization_id;
-- Insert new version
INSERT INTO fieldseeker.rodentlocation (
objectid,
organization_id,
locationname,
zone,
zone2,
habitat,
priority,
usetype,
active,
description,
accessdesc,
comments,
symbology,
externalid,
nextactiondatescheduled,
locationnumber,
lastinspectdate,
lastinspectspecies,
lastinspectaction,
lastinspectconditions,
lastinspectrodentevidence,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
creationdate,
creator,
editdate,
editor,
jurisdiction,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_organization_id,
p_locationname,
p_zone,
p_zone2,
p_habitat,
p_priority,
p_usetype,
p_active,
p_description,
p_accessdesc,
p_comments,
p_symbology,
p_externalid,
p_nextactiondatescheduled,
p_locationnumber,
p_lastinspectdate,
p_lastinspectspecies,
p_lastinspectaction,
p_lastinspectconditions,
p_lastinspectrodentevidence,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_jurisdiction,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_samplecollection(
p_objectid bigint,
p_organization_id INTEGER,
p_loc_id uuid,
p_startdatetime timestamp,
p_enddatetime timestamp,
p_sitecond varchar,
p_sampleid varchar,
p_survtech varchar,
p_datesent timestamp,
p_datetested timestamp,
p_testtech varchar,
p_comments varchar,
p_processed smallint,
p_sampletype varchar,
p_samplecond varchar,
p_species varchar,
p_sex varchar,
p_avetemp double precision,
p_windspeed double precision,
p_winddir varchar,
p_raingauge double precision,
p_activity varchar,
p_testmethod varchar,
p_diseasetested varchar,
p_diseasepos varchar,
p_reviewed smallint,
p_reviewedby varchar,
p_revieweddate timestamp,
p_locationname varchar,
p_zone varchar,
p_recordstatus smallint,
p_zone2 varchar,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_lab varchar,
p_fieldtech varchar,
p_flockid uuid,
p_samplecount smallint,
p_chickenid uuid,
p_gatewaysync smallint,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.samplecollection lv
WHERE lv.objectid = p_objectid
AND lv.organization_id = p_organization_id
AND lv.loc_id IS NOT DISTINCT FROM p_loc_id
AND lv.startdatetime IS NOT DISTINCT FROM p_startdatetime
AND lv.enddatetime IS NOT DISTINCT FROM p_enddatetime
AND lv.sitecond IS NOT DISTINCT FROM p_sitecond
AND lv.sampleid IS NOT DISTINCT FROM p_sampleid
AND lv.survtech IS NOT DISTINCT FROM p_survtech
AND lv.datesent IS NOT DISTINCT FROM p_datesent
AND lv.datetested IS NOT DISTINCT FROM p_datetested
AND lv.testtech IS NOT DISTINCT FROM p_testtech
AND lv.comments IS NOT DISTINCT FROM p_comments
AND lv.processed IS NOT DISTINCT FROM p_processed
AND lv.sampletype IS NOT DISTINCT FROM p_sampletype
AND lv.samplecond IS NOT DISTINCT FROM p_samplecond
AND lv.species IS NOT DISTINCT FROM p_species
AND lv.sex IS NOT DISTINCT FROM p_sex
AND lv.avetemp IS NOT DISTINCT FROM p_avetemp
AND lv.windspeed IS NOT DISTINCT FROM p_windspeed
AND lv.winddir IS NOT DISTINCT FROM p_winddir
AND lv.raingauge IS NOT DISTINCT FROM p_raingauge
AND lv.activity IS NOT DISTINCT FROM p_activity
AND lv.testmethod IS NOT DISTINCT FROM p_testmethod
AND lv.diseasetested IS NOT DISTINCT FROM p_diseasetested
AND lv.diseasepos IS NOT DISTINCT FROM p_diseasepos
AND lv.reviewed IS NOT DISTINCT FROM p_reviewed
AND lv.reviewedby IS NOT DISTINCT FROM p_reviewedby
AND lv.revieweddate IS NOT DISTINCT FROM p_revieweddate
AND lv.locationname IS NOT DISTINCT FROM p_locationname
AND lv.zone IS NOT DISTINCT FROM p_zone
AND lv.recordstatus IS NOT DISTINCT FROM p_recordstatus
AND lv.zone2 IS NOT DISTINCT FROM p_zone2
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.lab IS NOT DISTINCT FROM p_lab
AND lv.fieldtech IS NOT DISTINCT FROM p_fieldtech
AND lv.flockid IS NOT DISTINCT FROM p_flockid
AND lv.samplecount IS NOT DISTINCT FROM p_samplecount
AND lv.chickenid IS NOT DISTINCT FROM p_chickenid
AND lv.gatewaysync IS NOT DISTINCT FROM p_gatewaysync
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.samplecollection
WHERE objectid = p_objectid AND organization_id = p_organization_id 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 fieldseeker.samplecollection
WHERE objectid = p_objectid AND organization_id = p_organization_id;
-- Insert new version
INSERT INTO fieldseeker.samplecollection (
objectid,
organization_id,
loc_id,
startdatetime,
enddatetime,
sitecond,
sampleid,
survtech,
datesent,
datetested,
testtech,
comments,
processed,
sampletype,
samplecond,
species,
sex,
avetemp,
windspeed,
winddir,
raingauge,
activity,
testmethod,
diseasetested,
diseasepos,
reviewed,
reviewedby,
revieweddate,
locationname,
zone,
recordstatus,
zone2,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
lab,
fieldtech,
flockid,
samplecount,
chickenid,
gatewaysync,
creationdate,
creator,
editdate,
editor,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_organization_id,
p_loc_id,
p_startdatetime,
p_enddatetime,
p_sitecond,
p_sampleid,
p_survtech,
p_datesent,
p_datetested,
p_testtech,
p_comments,
p_processed,
p_sampletype,
p_samplecond,
p_species,
p_sex,
p_avetemp,
p_windspeed,
p_winddir,
p_raingauge,
p_activity,
p_testmethod,
p_diseasetested,
p_diseasepos,
p_reviewed,
p_reviewedby,
p_revieweddate,
p_locationname,
p_zone,
p_recordstatus,
p_zone2,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_lab,
p_fieldtech,
p_flockid,
p_samplecount,
p_chickenid,
p_gatewaysync,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_samplelocation(
p_objectid bigint,
p_organization_id INTEGER,
p_name varchar,
p_zone varchar,
p_habitat varchar,
p_priority varchar,
p_usetype varchar,
p_active smallint,
p_description varchar,
p_accessdesc varchar,
p_comments varchar,
p_externalid varchar,
p_nextactiondatescheduled timestamp,
p_zone2 varchar,
p_locationnumber integer,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_gatewaysync smallint,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.samplelocation lv
WHERE lv.objectid = p_objectid
AND lv.organization_id = p_organization_id
AND lv.name IS NOT DISTINCT FROM p_name
AND lv.zone IS NOT DISTINCT FROM p_zone
AND lv.habitat IS NOT DISTINCT FROM p_habitat
AND lv.priority IS NOT DISTINCT FROM p_priority
AND lv.usetype IS NOT DISTINCT FROM p_usetype
AND lv.active IS NOT DISTINCT FROM p_active
AND lv.description IS NOT DISTINCT FROM p_description
AND lv.accessdesc IS NOT DISTINCT FROM p_accessdesc
AND lv.comments IS NOT DISTINCT FROM p_comments
AND lv.externalid IS NOT DISTINCT FROM p_externalid
AND lv.nextactiondatescheduled IS NOT DISTINCT FROM p_nextactiondatescheduled
AND lv.zone2 IS NOT DISTINCT FROM p_zone2
AND lv.locationnumber IS NOT DISTINCT FROM p_locationnumber
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.gatewaysync IS NOT DISTINCT FROM p_gatewaysync
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.samplelocation
WHERE objectid = p_objectid AND organization_id = p_organization_id 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 fieldseeker.samplelocation
WHERE objectid = p_objectid AND organization_id = p_organization_id;
-- Insert new version
INSERT INTO fieldseeker.samplelocation (
objectid,
organization_id,
name,
zone,
habitat,
priority,
usetype,
active,
description,
accessdesc,
comments,
externalid,
nextactiondatescheduled,
zone2,
locationnumber,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
gatewaysync,
creationdate,
creator,
editdate,
editor,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_organization_id,
p_name,
p_zone,
p_habitat,
p_priority,
p_usetype,
p_active,
p_description,
p_accessdesc,
p_comments,
p_externalid,
p_nextactiondatescheduled,
p_zone2,
p_locationnumber,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_gatewaysync,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_servicerequest(
p_objectid bigint,
p_organization_id INTEGER,
p_recdatetime timestamp,
p_source varchar,
p_entrytech varchar,
p_priority varchar,
p_supervisor varchar,
p_assignedtech varchar,
p_status varchar,
p_clranon smallint,
p_clrfname varchar,
p_clrphone1 varchar,
p_clrphone2 varchar,
p_clremail varchar,
p_clrcompany varchar,
p_clraddr1 varchar,
p_clraddr2 varchar,
p_clrcity varchar,
p_clrstate varchar,
p_clrzip varchar,
p_clrother varchar,
p_clrcontpref varchar,
p_reqcompany varchar,
p_reqaddr1 varchar,
p_reqaddr2 varchar,
p_reqcity varchar,
p_reqstate varchar,
p_reqzip varchar,
p_reqcrossst varchar,
p_reqsubdiv varchar,
p_reqmapgrid varchar,
p_reqpermission smallint,
p_reqtarget varchar,
p_reqdescr varchar,
p_reqnotesfortech varchar,
p_reqnotesforcust varchar,
p_reqfldnotes varchar,
p_reqprogramactions varchar,
p_datetimeclosed timestamp,
p_techclosed varchar,
p_sr_number integer,
p_reviewed smallint,
p_reviewedby varchar,
p_revieweddate timestamp,
p_accepted smallint,
p_accepteddate timestamp,
p_rejectedby varchar,
p_rejecteddate timestamp,
p_rejectedreason varchar,
p_duedate timestamp,
p_acceptedby varchar,
p_comments varchar,
p_estcompletedate timestamp,
p_nextaction varchar,
p_recordstatus smallint,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_firstresponsedate timestamp,
p_responsedaycount smallint,
p_allowed varchar,
p_xvalue varchar,
p_yvalue varchar,
p_validx varchar,
p_validy varchar,
p_externalid varchar,
p_externalerror varchar,
p_pointlocid uuid,
p_notified smallint,
p_notifieddate timestamp,
p_scheduled smallint,
p_scheduleddate timestamp,
p_dog integer,
p_schedule_period varchar,
p_schedule_notes varchar,
p_spanish integer,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_issuesreported varchar,
p_jurisdiction varchar,
p_notificationtimestamp varchar,
p_zone varchar,
p_zone2 varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.servicerequest lv
WHERE lv.objectid = p_objectid
AND lv.organization_id = p_organization_id
AND lv.recdatetime IS NOT DISTINCT FROM p_recdatetime
AND lv.source IS NOT DISTINCT FROM p_source
AND lv.entrytech IS NOT DISTINCT FROM p_entrytech
AND lv.priority IS NOT DISTINCT FROM p_priority
AND lv.supervisor IS NOT DISTINCT FROM p_supervisor
AND lv.assignedtech IS NOT DISTINCT FROM p_assignedtech
AND lv.status IS NOT DISTINCT FROM p_status
AND lv.clranon IS NOT DISTINCT FROM p_clranon
AND lv.clrfname IS NOT DISTINCT FROM p_clrfname
AND lv.clrphone1 IS NOT DISTINCT FROM p_clrphone1
AND lv.clrphone2 IS NOT DISTINCT FROM p_clrphone2
AND lv.clremail IS NOT DISTINCT FROM p_clremail
AND lv.clrcompany IS NOT DISTINCT FROM p_clrcompany
AND lv.clraddr1 IS NOT DISTINCT FROM p_clraddr1
AND lv.clraddr2 IS NOT DISTINCT FROM p_clraddr2
AND lv.clrcity IS NOT DISTINCT FROM p_clrcity
AND lv.clrstate IS NOT DISTINCT FROM p_clrstate
AND lv.clrzip IS NOT DISTINCT FROM p_clrzip
AND lv.clrother IS NOT DISTINCT FROM p_clrother
AND lv.clrcontpref IS NOT DISTINCT FROM p_clrcontpref
AND lv.reqcompany IS NOT DISTINCT FROM p_reqcompany
AND lv.reqaddr1 IS NOT DISTINCT FROM p_reqaddr1
AND lv.reqaddr2 IS NOT DISTINCT FROM p_reqaddr2
AND lv.reqcity IS NOT DISTINCT FROM p_reqcity
AND lv.reqstate IS NOT DISTINCT FROM p_reqstate
AND lv.reqzip IS NOT DISTINCT FROM p_reqzip
AND lv.reqcrossst IS NOT DISTINCT FROM p_reqcrossst
AND lv.reqsubdiv IS NOT DISTINCT FROM p_reqsubdiv
AND lv.reqmapgrid IS NOT DISTINCT FROM p_reqmapgrid
AND lv.reqpermission IS NOT DISTINCT FROM p_reqpermission
AND lv.reqtarget IS NOT DISTINCT FROM p_reqtarget
AND lv.reqdescr IS NOT DISTINCT FROM p_reqdescr
AND lv.reqnotesfortech IS NOT DISTINCT FROM p_reqnotesfortech
AND lv.reqnotesforcust IS NOT DISTINCT FROM p_reqnotesforcust
AND lv.reqfldnotes IS NOT DISTINCT FROM p_reqfldnotes
AND lv.reqprogramactions IS NOT DISTINCT FROM p_reqprogramactions
AND lv.datetimeclosed IS NOT DISTINCT FROM p_datetimeclosed
AND lv.techclosed IS NOT DISTINCT FROM p_techclosed
AND lv.sr_number IS NOT DISTINCT FROM p_sr_number
AND lv.reviewed IS NOT DISTINCT FROM p_reviewed
AND lv.reviewedby IS NOT DISTINCT FROM p_reviewedby
AND lv.revieweddate IS NOT DISTINCT FROM p_revieweddate
AND lv.accepted IS NOT DISTINCT FROM p_accepted
AND lv.accepteddate IS NOT DISTINCT FROM p_accepteddate
AND lv.rejectedby IS NOT DISTINCT FROM p_rejectedby
AND lv.rejecteddate IS NOT DISTINCT FROM p_rejecteddate
AND lv.rejectedreason IS NOT DISTINCT FROM p_rejectedreason
AND lv.duedate IS NOT DISTINCT FROM p_duedate
AND lv.acceptedby IS NOT DISTINCT FROM p_acceptedby
AND lv.comments IS NOT DISTINCT FROM p_comments
AND lv.estcompletedate IS NOT DISTINCT FROM p_estcompletedate
AND lv.nextaction IS NOT DISTINCT FROM p_nextaction
AND lv.recordstatus IS NOT DISTINCT FROM p_recordstatus
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.firstresponsedate IS NOT DISTINCT FROM p_firstresponsedate
AND lv.responsedaycount IS NOT DISTINCT FROM p_responsedaycount
AND lv.allowed IS NOT DISTINCT FROM p_allowed
AND lv.xvalue IS NOT DISTINCT FROM p_xvalue
AND lv.yvalue IS NOT DISTINCT FROM p_yvalue
AND lv.validx IS NOT DISTINCT FROM p_validx
AND lv.validy IS NOT DISTINCT FROM p_validy
AND lv.externalid IS NOT DISTINCT FROM p_externalid
AND lv.externalerror IS NOT DISTINCT FROM p_externalerror
AND lv.pointlocid IS NOT DISTINCT FROM p_pointlocid
AND lv.notified IS NOT DISTINCT FROM p_notified
AND lv.notifieddate IS NOT DISTINCT FROM p_notifieddate
AND lv.scheduled IS NOT DISTINCT FROM p_scheduled
AND lv.scheduleddate IS NOT DISTINCT FROM p_scheduleddate
AND lv.dog IS NOT DISTINCT FROM p_dog
AND lv.schedule_period IS NOT DISTINCT FROM p_schedule_period
AND lv.schedule_notes IS NOT DISTINCT FROM p_schedule_notes
AND lv.spanish IS NOT DISTINCT FROM p_spanish
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.issuesreported IS NOT DISTINCT FROM p_issuesreported
AND lv.jurisdiction IS NOT DISTINCT FROM p_jurisdiction
AND lv.notificationtimestamp IS NOT DISTINCT FROM p_notificationtimestamp
AND lv.zone IS NOT DISTINCT FROM p_zone
AND lv.zone2 IS NOT DISTINCT FROM p_zone2
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.servicerequest
WHERE objectid = p_objectid AND organization_id = p_organization_id 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 fieldseeker.servicerequest
WHERE objectid = p_objectid AND organization_id = p_organization_id;
-- Insert new version
INSERT INTO fieldseeker.servicerequest (
objectid,
organization_id,
recdatetime,
source,
entrytech,
priority,
supervisor,
assignedtech,
status,
clranon,
clrfname,
clrphone1,
clrphone2,
clremail,
clrcompany,
clraddr1,
clraddr2,
clrcity,
clrstate,
clrzip,
clrother,
clrcontpref,
reqcompany,
reqaddr1,
reqaddr2,
reqcity,
reqstate,
reqzip,
reqcrossst,
reqsubdiv,
reqmapgrid,
reqpermission,
reqtarget,
reqdescr,
reqnotesfortech,
reqnotesforcust,
reqfldnotes,
reqprogramactions,
datetimeclosed,
techclosed,
sr_number,
reviewed,
reviewedby,
revieweddate,
accepted,
accepteddate,
rejectedby,
rejecteddate,
rejectedreason,
duedate,
acceptedby,
comments,
estcompletedate,
nextaction,
recordstatus,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
firstresponsedate,
responsedaycount,
allowed,
xvalue,
yvalue,
validx,
validy,
externalid,
externalerror,
pointlocid,
notified,
notifieddate,
scheduled,
scheduleddate,
dog,
schedule_period,
schedule_notes,
spanish,
creationdate,
creator,
editdate,
editor,
issuesreported,
jurisdiction,
notificationtimestamp,
zone,
zone2,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_organization_id,
p_recdatetime,
p_source,
p_entrytech,
p_priority,
p_supervisor,
p_assignedtech,
p_status,
p_clranon,
p_clrfname,
p_clrphone1,
p_clrphone2,
p_clremail,
p_clrcompany,
p_clraddr1,
p_clraddr2,
p_clrcity,
p_clrstate,
p_clrzip,
p_clrother,
p_clrcontpref,
p_reqcompany,
p_reqaddr1,
p_reqaddr2,
p_reqcity,
p_reqstate,
p_reqzip,
p_reqcrossst,
p_reqsubdiv,
p_reqmapgrid,
p_reqpermission,
p_reqtarget,
p_reqdescr,
p_reqnotesfortech,
p_reqnotesforcust,
p_reqfldnotes,
p_reqprogramactions,
p_datetimeclosed,
p_techclosed,
p_sr_number,
p_reviewed,
p_reviewedby,
p_revieweddate,
p_accepted,
p_accepteddate,
p_rejectedby,
p_rejecteddate,
p_rejectedreason,
p_duedate,
p_acceptedby,
p_comments,
p_estcompletedate,
p_nextaction,
p_recordstatus,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_firstresponsedate,
p_responsedaycount,
p_allowed,
p_xvalue,
p_yvalue,
p_validx,
p_validy,
p_externalid,
p_externalerror,
p_pointlocid,
p_notified,
p_notifieddate,
p_scheduled,
p_scheduleddate,
p_dog,
p_schedule_period,
p_schedule_notes,
p_spanish,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_issuesreported,
p_jurisdiction,
p_notificationtimestamp,
p_zone,
p_zone2,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_speciesabundance(
p_objectid bigint,
p_organization_id INTEGER,
p_trapdata_id uuid,
p_species varchar,
p_males smallint,
p_unknown smallint,
p_bloodedfem smallint,
p_gravidfem smallint,
p_larvae smallint,
p_poolstogen smallint,
p_processed smallint,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_pupae smallint,
p_eggs smallint,
p_females integer,
p_total integer,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_yearweek integer,
p_globalzscore double precision,
p_r7score double precision,
p_r8score double precision,
p_h3r7 varchar,
p_h3r8 varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.speciesabundance lv
WHERE lv.objectid = p_objectid
AND lv.organization_id = p_organization_id
AND lv.trapdata_id IS NOT DISTINCT FROM p_trapdata_id
AND lv.species IS NOT DISTINCT FROM p_species
AND lv.males IS NOT DISTINCT FROM p_males
AND lv.unknown IS NOT DISTINCT FROM p_unknown
AND lv.bloodedfem IS NOT DISTINCT FROM p_bloodedfem
AND lv.gravidfem IS NOT DISTINCT FROM p_gravidfem
AND lv.larvae IS NOT DISTINCT FROM p_larvae
AND lv.poolstogen IS NOT DISTINCT FROM p_poolstogen
AND lv.processed IS NOT DISTINCT FROM p_processed
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.pupae IS NOT DISTINCT FROM p_pupae
AND lv.eggs IS NOT DISTINCT FROM p_eggs
AND lv.females IS NOT DISTINCT FROM p_females
AND lv.total IS NOT DISTINCT FROM p_total
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.yearweek IS NOT DISTINCT FROM p_yearweek
AND lv.globalzscore IS NOT DISTINCT FROM p_globalzscore
AND lv.r7score IS NOT DISTINCT FROM p_r7score
AND lv.r8score IS NOT DISTINCT FROM p_r8score
AND lv.h3r7 IS NOT DISTINCT FROM p_h3r7
AND lv.h3r8 IS NOT DISTINCT FROM p_h3r8
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.speciesabundance
WHERE objectid = p_objectid AND organization_id = p_organization_id 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 fieldseeker.speciesabundance
WHERE objectid = p_objectid AND organization_id = p_organization_id;
-- Insert new version
INSERT INTO fieldseeker.speciesabundance (
objectid,
organization_id,
trapdata_id,
species,
males,
unknown,
bloodedfem,
gravidfem,
larvae,
poolstogen,
processed,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
pupae,
eggs,
females,
total,
creationdate,
creator,
editdate,
editor,
yearweek,
globalzscore,
r7score,
r8score,
h3r7,
h3r8,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_organization_id,
p_trapdata_id,
p_species,
p_males,
p_unknown,
p_bloodedfem,
p_gravidfem,
p_larvae,
p_poolstogen,
p_processed,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_pupae,
p_eggs,
p_females,
p_total,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_yearweek,
p_globalzscore,
p_r7score,
p_r8score,
p_h3r7,
p_h3r8,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_stormdrain(
p_objectid bigint,
p_organization_id INTEGER,
p_nexttreatmentdate timestamp,
p_lasttreatdate timestamp,
p_lastaction varchar,
p_symbology varchar,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_laststatus varchar,
p_zone varchar,
p_zone2 varchar,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_type varchar,
p_jurisdiction varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.stormdrain lv
WHERE lv.objectid = p_objectid
AND lv.organization_id = p_organization_id
AND lv.nexttreatmentdate IS NOT DISTINCT FROM p_nexttreatmentdate
AND lv.lasttreatdate IS NOT DISTINCT FROM p_lasttreatdate
AND lv.lastaction IS NOT DISTINCT FROM p_lastaction
AND lv.symbology IS NOT DISTINCT FROM p_symbology
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.laststatus IS NOT DISTINCT FROM p_laststatus
AND lv.zone IS NOT DISTINCT FROM p_zone
AND lv.zone2 IS NOT DISTINCT FROM p_zone2
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.type IS NOT DISTINCT FROM p_type
AND lv.jurisdiction IS NOT DISTINCT FROM p_jurisdiction
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.stormdrain
WHERE objectid = p_objectid AND organization_id = p_organization_id 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 fieldseeker.stormdrain
WHERE objectid = p_objectid AND organization_id = p_organization_id;
-- Insert new version
INSERT INTO fieldseeker.stormdrain (
objectid,
organization_id,
nexttreatmentdate,
lasttreatdate,
lastaction,
symbology,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
laststatus,
zone,
zone2,
creationdate,
creator,
editdate,
editor,
type,
jurisdiction,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_organization_id,
p_nexttreatmentdate,
p_lasttreatdate,
p_lastaction,
p_symbology,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_laststatus,
p_zone,
p_zone2,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_type,
p_jurisdiction,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_timecard(
p_objectid bigint,
p_organization_id INTEGER,
p_activity varchar,
p_startdatetime timestamp,
p_enddatetime timestamp,
p_comments varchar,
p_externalid varchar,
p_equiptype varchar,
p_locationname varchar,
p_zone varchar,
p_zone2 varchar,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_linelocid uuid,
p_pointlocid uuid,
p_polygonlocid uuid,
p_lclocid uuid,
p_samplelocid uuid,
p_srid uuid,
p_traplocid uuid,
p_fieldtech varchar,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_rodentlocid uuid,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.timecard lv
WHERE lv.objectid = p_objectid
AND lv.organization_id = p_organization_id
AND lv.activity IS NOT DISTINCT FROM p_activity
AND lv.startdatetime IS NOT DISTINCT FROM p_startdatetime
AND lv.enddatetime IS NOT DISTINCT FROM p_enddatetime
AND lv.comments IS NOT DISTINCT FROM p_comments
AND lv.externalid IS NOT DISTINCT FROM p_externalid
AND lv.equiptype IS NOT DISTINCT FROM p_equiptype
AND lv.locationname IS NOT DISTINCT FROM p_locationname
AND lv.zone IS NOT DISTINCT FROM p_zone
AND lv.zone2 IS NOT DISTINCT FROM p_zone2
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.linelocid IS NOT DISTINCT FROM p_linelocid
AND lv.pointlocid IS NOT DISTINCT FROM p_pointlocid
AND lv.polygonlocid IS NOT DISTINCT FROM p_polygonlocid
AND lv.lclocid IS NOT DISTINCT FROM p_lclocid
AND lv.samplelocid IS NOT DISTINCT FROM p_samplelocid
AND lv.srid IS NOT DISTINCT FROM p_srid
AND lv.traplocid IS NOT DISTINCT FROM p_traplocid
AND lv.fieldtech IS NOT DISTINCT FROM p_fieldtech
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.rodentlocid IS NOT DISTINCT FROM p_rodentlocid
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.timecard
WHERE objectid = p_objectid AND organization_id = p_organization_id 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 fieldseeker.timecard
WHERE objectid = p_objectid AND organization_id = p_organization_id;
-- Insert new version
INSERT INTO fieldseeker.timecard (
objectid,
organization_id,
activity,
startdatetime,
enddatetime,
comments,
externalid,
equiptype,
locationname,
zone,
zone2,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
linelocid,
pointlocid,
polygonlocid,
lclocid,
samplelocid,
srid,
traplocid,
fieldtech,
creationdate,
creator,
editdate,
editor,
rodentlocid,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_organization_id,
p_activity,
p_startdatetime,
p_enddatetime,
p_comments,
p_externalid,
p_equiptype,
p_locationname,
p_zone,
p_zone2,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_linelocid,
p_pointlocid,
p_polygonlocid,
p_lclocid,
p_samplelocid,
p_srid,
p_traplocid,
p_fieldtech,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_rodentlocid,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_trapdata(
p_objectid bigint,
p_organization_id INTEGER,
p_traptype varchar,
p_trapactivitytype varchar,
p_startdatetime timestamp,
p_enddatetime timestamp,
p_comments varchar,
p_idbytech varchar,
p_sortbytech varchar,
p_processed smallint,
p_sitecond varchar,
p_locationname varchar,
p_recordstatus smallint,
p_reviewed smallint,
p_reviewedby varchar,
p_revieweddate timestamp,
p_trapcondition varchar,
p_trapnights smallint,
p_zone varchar,
p_zone2 varchar,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_srid uuid,
p_fieldtech varchar,
p_gatewaysync smallint,
p_loc_id uuid,
p_voltage double precision,
p_winddir varchar,
p_windspeed double precision,
p_avetemp double precision,
p_raingauge double precision,
p_lr smallint,
p_field integer,
p_vectorsurvtrapdataid varchar,
p_vectorsurvtraplocationid varchar,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_lure varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.trapdata lv
WHERE lv.objectid = p_objectid
AND lv.organization_id = p_organization_id
AND lv.traptype IS NOT DISTINCT FROM p_traptype
AND lv.trapactivitytype IS NOT DISTINCT FROM p_trapactivitytype
AND lv.startdatetime IS NOT DISTINCT FROM p_startdatetime
AND lv.enddatetime IS NOT DISTINCT FROM p_enddatetime
AND lv.comments IS NOT DISTINCT FROM p_comments
AND lv.idbytech IS NOT DISTINCT FROM p_idbytech
AND lv.sortbytech IS NOT DISTINCT FROM p_sortbytech
AND lv.processed IS NOT DISTINCT FROM p_processed
AND lv.sitecond IS NOT DISTINCT FROM p_sitecond
AND lv.locationname IS NOT DISTINCT FROM p_locationname
AND lv.recordstatus IS NOT DISTINCT FROM p_recordstatus
AND lv.reviewed IS NOT DISTINCT FROM p_reviewed
AND lv.reviewedby IS NOT DISTINCT FROM p_reviewedby
AND lv.revieweddate IS NOT DISTINCT FROM p_revieweddate
AND lv.trapcondition IS NOT DISTINCT FROM p_trapcondition
AND lv.trapnights IS NOT DISTINCT FROM p_trapnights
AND lv.zone IS NOT DISTINCT FROM p_zone
AND lv.zone2 IS NOT DISTINCT FROM p_zone2
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.srid IS NOT DISTINCT FROM p_srid
AND lv.fieldtech IS NOT DISTINCT FROM p_fieldtech
AND lv.gatewaysync IS NOT DISTINCT FROM p_gatewaysync
AND lv.loc_id IS NOT DISTINCT FROM p_loc_id
AND lv.voltage IS NOT DISTINCT FROM p_voltage
AND lv.winddir IS NOT DISTINCT FROM p_winddir
AND lv.windspeed IS NOT DISTINCT FROM p_windspeed
AND lv.avetemp IS NOT DISTINCT FROM p_avetemp
AND lv.raingauge IS NOT DISTINCT FROM p_raingauge
AND lv.lr IS NOT DISTINCT FROM p_lr
AND lv.field IS NOT DISTINCT FROM p_field
AND lv.vectorsurvtrapdataid IS NOT DISTINCT FROM p_vectorsurvtrapdataid
AND lv.vectorsurvtraplocationid IS NOT DISTINCT FROM p_vectorsurvtraplocationid
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.lure IS NOT DISTINCT FROM p_lure
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.trapdata
WHERE objectid = p_objectid AND organization_id = p_organization_id 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 fieldseeker.trapdata
WHERE objectid = p_objectid AND organization_id = p_organization_id;
-- Insert new version
INSERT INTO fieldseeker.trapdata (
objectid,
organization_id,
traptype,
trapactivitytype,
startdatetime,
enddatetime,
comments,
idbytech,
sortbytech,
processed,
sitecond,
locationname,
recordstatus,
reviewed,
reviewedby,
revieweddate,
trapcondition,
trapnights,
zone,
zone2,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
srid,
fieldtech,
gatewaysync,
loc_id,
voltage,
winddir,
windspeed,
avetemp,
raingauge,
lr,
field,
vectorsurvtrapdataid,
vectorsurvtraplocationid,
creationdate,
creator,
editdate,
editor,
lure,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_organization_id,
p_traptype,
p_trapactivitytype,
p_startdatetime,
p_enddatetime,
p_comments,
p_idbytech,
p_sortbytech,
p_processed,
p_sitecond,
p_locationname,
p_recordstatus,
p_reviewed,
p_reviewedby,
p_revieweddate,
p_trapcondition,
p_trapnights,
p_zone,
p_zone2,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_srid,
p_fieldtech,
p_gatewaysync,
p_loc_id,
p_voltage,
p_winddir,
p_windspeed,
p_avetemp,
p_raingauge,
p_lr,
p_field,
p_vectorsurvtrapdataid,
p_vectorsurvtraplocationid,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_lure,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_traplocation(
p_objectid bigint,
p_organization_id INTEGER,
p_name varchar,
p_zone varchar,
p_habitat varchar,
p_priority varchar,
p_usetype varchar,
p_active smallint,
p_description varchar,
p_accessdesc varchar,
p_comments varchar,
p_externalid varchar,
p_nextactiondatescheduled timestamp,
p_zone2 varchar,
p_locationnumber integer,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_gatewaysync smallint,
p_route integer,
p_set_dow integer,
p_route_order integer,
p_vectorsurvsiteid varchar,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_h3r7 varchar,
p_h3r8 varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.traplocation lv
WHERE lv.objectid = p_objectid
AND lv.organization_id = p_organization_id
AND lv.name IS NOT DISTINCT FROM p_name
AND lv.zone IS NOT DISTINCT FROM p_zone
AND lv.habitat IS NOT DISTINCT FROM p_habitat
AND lv.priority IS NOT DISTINCT FROM p_priority
AND lv.usetype IS NOT DISTINCT FROM p_usetype
AND lv.active IS NOT DISTINCT FROM p_active
AND lv.description IS NOT DISTINCT FROM p_description
AND lv.accessdesc IS NOT DISTINCT FROM p_accessdesc
AND lv.comments IS NOT DISTINCT FROM p_comments
AND lv.externalid IS NOT DISTINCT FROM p_externalid
AND lv.nextactiondatescheduled IS NOT DISTINCT FROM p_nextactiondatescheduled
AND lv.zone2 IS NOT DISTINCT FROM p_zone2
AND lv.locationnumber IS NOT DISTINCT FROM p_locationnumber
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.gatewaysync IS NOT DISTINCT FROM p_gatewaysync
AND lv.route IS NOT DISTINCT FROM p_route
AND lv.set_dow IS NOT DISTINCT FROM p_set_dow
AND lv.route_order IS NOT DISTINCT FROM p_route_order
AND lv.vectorsurvsiteid IS NOT DISTINCT FROM p_vectorsurvsiteid
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.h3r7 IS NOT DISTINCT FROM p_h3r7
AND lv.h3r8 IS NOT DISTINCT FROM p_h3r8
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.traplocation
WHERE objectid = p_objectid AND organization_id = p_organization_id 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 fieldseeker.traplocation
WHERE objectid = p_objectid AND organization_id = p_organization_id;
-- Insert new version
INSERT INTO fieldseeker.traplocation (
objectid,
organization_id,
name,
zone,
habitat,
priority,
usetype,
active,
description,
accessdesc,
comments,
externalid,
nextactiondatescheduled,
zone2,
locationnumber,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
gatewaysync,
route,
set_dow,
route_order,
vectorsurvsiteid,
creationdate,
creator,
editdate,
editor,
h3r7,
h3r8,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_organization_id,
p_name,
p_zone,
p_habitat,
p_priority,
p_usetype,
p_active,
p_description,
p_accessdesc,
p_comments,
p_externalid,
p_nextactiondatescheduled,
p_zone2,
p_locationnumber,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_gatewaysync,
p_route,
p_set_dow,
p_route_order,
p_vectorsurvsiteid,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_h3r7,
p_h3r8,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_treatmentarea(
p_objectid bigint,
p_organization_id INTEGER,
p_treat_id uuid,
p_session_id uuid,
p_treatdate timestamp,
p_comments varchar,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_notified smallint,
p_type varchar,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_shape__area double precision,
p_shape__length double precision,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.treatmentarea lv
WHERE lv.objectid = p_objectid
AND lv.organization_id = p_organization_id
AND lv.treat_id IS NOT DISTINCT FROM p_treat_id
AND lv.session_id IS NOT DISTINCT FROM p_session_id
AND lv.treatdate IS NOT DISTINCT FROM p_treatdate
AND lv.comments IS NOT DISTINCT FROM p_comments
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.notified IS NOT DISTINCT FROM p_notified
AND lv.type IS NOT DISTINCT FROM p_type
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.shape__area IS NOT DISTINCT FROM p_shape__area
AND lv.shape__length IS NOT DISTINCT FROM p_shape__length
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.treatmentarea
WHERE objectid = p_objectid AND organization_id = p_organization_id 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 fieldseeker.treatmentarea
WHERE objectid = p_objectid AND organization_id = p_organization_id;
-- Insert new version
INSERT INTO fieldseeker.treatmentarea (
objectid,
organization_id,
treat_id,
session_id,
treatdate,
comments,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
notified,
type,
creationdate,
creator,
editdate,
editor,
shape__area,
shape__length,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_organization_id,
p_treat_id,
p_session_id,
p_treatdate,
p_comments,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_notified,
p_type,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_shape__area,
p_shape__length,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_treatment(
p_objectid bigint,
p_organization_id INTEGER,
p_activity varchar,
p_treatarea double precision,
p_areaunit varchar,
p_product varchar,
p_qty double precision,
p_qtyunit varchar,
p_method varchar,
p_equiptype varchar,
p_comments varchar,
p_avetemp double precision,
p_windspeed double precision,
p_winddir varchar,
p_raingauge double precision,
p_startdatetime timestamp,
p_enddatetime timestamp,
p_insp_id uuid,
p_reviewed smallint,
p_reviewedby varchar,
p_revieweddate timestamp,
p_locationname varchar,
p_zone varchar,
p_warningoverride smallint,
p_recordstatus smallint,
p_zone2 varchar,
p_treatacres double precision,
p_tirecount smallint,
p_cbcount smallint,
p_containercount smallint,
p_globalid uuid,
p_treatmentlength double precision,
p_treatmenthours double precision,
p_treatmentlengthunits varchar,
p_linelocid uuid,
p_pointlocid uuid,
p_polygonlocid uuid,
p_srid uuid,
p_sdid uuid,
p_barrierrouteid uuid,
p_ulvrouteid uuid,
p_fieldtech varchar,
p_ptaid uuid,
p_flowrate double precision,
p_habitat varchar,
p_treathectares double precision,
p_invloc varchar,
p_temp_sitecond varchar,
p_sitecond varchar,
p_totalcostprodcut double precision,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_targetspecies varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.treatment lv
WHERE lv.objectid = p_objectid
AND lv.organization_id = p_organization_id
AND lv.activity IS NOT DISTINCT FROM p_activity
AND lv.treatarea IS NOT DISTINCT FROM p_treatarea
AND lv.areaunit IS NOT DISTINCT FROM p_areaunit
AND lv.product IS NOT DISTINCT FROM p_product
AND lv.qty IS NOT DISTINCT FROM p_qty
AND lv.qtyunit IS NOT DISTINCT FROM p_qtyunit
AND lv.method IS NOT DISTINCT FROM p_method
AND lv.equiptype IS NOT DISTINCT FROM p_equiptype
AND lv.comments IS NOT DISTINCT FROM p_comments
AND lv.avetemp IS NOT DISTINCT FROM p_avetemp
AND lv.windspeed IS NOT DISTINCT FROM p_windspeed
AND lv.winddir IS NOT DISTINCT FROM p_winddir
AND lv.raingauge IS NOT DISTINCT FROM p_raingauge
AND lv.startdatetime IS NOT DISTINCT FROM p_startdatetime
AND lv.enddatetime IS NOT DISTINCT FROM p_enddatetime
AND lv.insp_id IS NOT DISTINCT FROM p_insp_id
AND lv.reviewed IS NOT DISTINCT FROM p_reviewed
AND lv.reviewedby IS NOT DISTINCT FROM p_reviewedby
AND lv.revieweddate IS NOT DISTINCT FROM p_revieweddate
AND lv.locationname IS NOT DISTINCT FROM p_locationname
AND lv.zone IS NOT DISTINCT FROM p_zone
AND lv.warningoverride IS NOT DISTINCT FROM p_warningoverride
AND lv.recordstatus IS NOT DISTINCT FROM p_recordstatus
AND lv.zone2 IS NOT DISTINCT FROM p_zone2
AND lv.treatacres IS NOT DISTINCT FROM p_treatacres
AND lv.tirecount IS NOT DISTINCT FROM p_tirecount
AND lv.cbcount IS NOT DISTINCT FROM p_cbcount
AND lv.containercount IS NOT DISTINCT FROM p_containercount
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.treatmentlength IS NOT DISTINCT FROM p_treatmentlength
AND lv.treatmenthours IS NOT DISTINCT FROM p_treatmenthours
AND lv.treatmentlengthunits IS NOT DISTINCT FROM p_treatmentlengthunits
AND lv.linelocid IS NOT DISTINCT FROM p_linelocid
AND lv.pointlocid IS NOT DISTINCT FROM p_pointlocid
AND lv.polygonlocid IS NOT DISTINCT FROM p_polygonlocid
AND lv.srid IS NOT DISTINCT FROM p_srid
AND lv.sdid IS NOT DISTINCT FROM p_sdid
AND lv.barrierrouteid IS NOT DISTINCT FROM p_barrierrouteid
AND lv.ulvrouteid IS NOT DISTINCT FROM p_ulvrouteid
AND lv.fieldtech IS NOT DISTINCT FROM p_fieldtech
AND lv.ptaid IS NOT DISTINCT FROM p_ptaid
AND lv.flowrate IS NOT DISTINCT FROM p_flowrate
AND lv.habitat IS NOT DISTINCT FROM p_habitat
AND lv.treathectares IS NOT DISTINCT FROM p_treathectares
AND lv.invloc IS NOT DISTINCT FROM p_invloc
AND lv.temp_sitecond IS NOT DISTINCT FROM p_temp_sitecond
AND lv.sitecond IS NOT DISTINCT FROM p_sitecond
AND lv.totalcostprodcut IS NOT DISTINCT FROM p_totalcostprodcut
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.targetspecies IS NOT DISTINCT FROM p_targetspecies
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.treatment
WHERE objectid = p_objectid AND organization_id = p_organization_id 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 fieldseeker.treatment
WHERE objectid = p_objectid AND organization_id = p_organization_id;
-- Insert new version
INSERT INTO fieldseeker.treatment (
objectid,
organization_id,
activity,
treatarea,
areaunit,
product,
qty,
qtyunit,
method,
equiptype,
comments,
avetemp,
windspeed,
winddir,
raingauge,
startdatetime,
enddatetime,
insp_id,
reviewed,
reviewedby,
revieweddate,
locationname,
zone,
warningoverride,
recordstatus,
zone2,
treatacres,
tirecount,
cbcount,
containercount,
globalid,
treatmentlength,
treatmenthours,
treatmentlengthunits,
linelocid,
pointlocid,
polygonlocid,
srid,
sdid,
barrierrouteid,
ulvrouteid,
fieldtech,
ptaid,
flowrate,
habitat,
treathectares,
invloc,
temp_sitecond,
sitecond,
totalcostprodcut,
creationdate,
creator,
editdate,
editor,
targetspecies,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_organization_id,
p_activity,
p_treatarea,
p_areaunit,
p_product,
p_qty,
p_qtyunit,
p_method,
p_equiptype,
p_comments,
p_avetemp,
p_windspeed,
p_winddir,
p_raingauge,
p_startdatetime,
p_enddatetime,
p_insp_id,
p_reviewed,
p_reviewedby,
p_revieweddate,
p_locationname,
p_zone,
p_warningoverride,
p_recordstatus,
p_zone2,
p_treatacres,
p_tirecount,
p_cbcount,
p_containercount,
p_globalid,
p_treatmentlength,
p_treatmenthours,
p_treatmentlengthunits,
p_linelocid,
p_pointlocid,
p_polygonlocid,
p_srid,
p_sdid,
p_barrierrouteid,
p_ulvrouteid,
p_fieldtech,
p_ptaid,
p_flowrate,
p_habitat,
p_treathectares,
p_invloc,
p_temp_sitecond,
p_sitecond,
p_totalcostprodcut,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_targetspecies,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_zones2(
p_objectid bigint,
p_organization_id INTEGER,
p_name varchar,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_shape__area double precision,
p_shape__length double precision,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.zones2 lv
WHERE lv.objectid = p_objectid
AND lv.organization_id = p_organization_id
AND lv.name IS NOT DISTINCT FROM p_name
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.shape__area IS NOT DISTINCT FROM p_shape__area
AND lv.shape__length IS NOT DISTINCT FROM p_shape__length
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.zones2
WHERE objectid = p_objectid AND organization_id = p_organization_id 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 fieldseeker.zones2
WHERE objectid = p_objectid AND organization_id = p_organization_id;
-- Insert new version
INSERT INTO fieldseeker.zones2 (
objectid,
organization_id,
name,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
creationdate,
creator,
editdate,
editor,
shape__area,
shape__length,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_organization_id,
p_name,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_shape__area,
p_shape__length,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_zones(
p_objectid bigint,
p_organization_id INTEGER,
p_name varchar,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_active integer,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_shape__area double precision,
p_shape__length double precision,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.zones lv
WHERE lv.objectid = p_objectid
AND lv.organization_id = p_organization_id
AND lv.name IS NOT DISTINCT FROM p_name
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.active IS NOT DISTINCT FROM p_active
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.shape__area IS NOT DISTINCT FROM p_shape__area
AND lv.shape__length IS NOT DISTINCT FROM p_shape__length
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.zones
WHERE objectid = p_objectid AND organization_id = p_organization_id 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 fieldseeker.zones
WHERE objectid = p_objectid AND organization_id = p_organization_id;
-- Insert new version
INSERT INTO fieldseeker.zones (
objectid,
organization_id,
name,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
active,
creationdate,
creator,
editdate,
editor,
shape__area,
shape__length,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_organization_id,
p_name,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_active,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_shape__area,
p_shape__length,
p_geometry,
p_geospatial,
v_next_version
);
-- 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
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_containerrelate(
p_objectid bigint,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_inspsampleid uuid,
p_mosquitoinspid uuid,
p_treatmentid uuid,
p_containertype varchar,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.containerrelate lv
WHERE lv.objectid = p_objectid
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.inspsampleid IS NOT DISTINCT FROM p_inspsampleid
AND lv.mosquitoinspid IS NOT DISTINCT FROM p_mosquitoinspid
AND lv.treatmentid IS NOT DISTINCT FROM p_treatmentid
AND lv.containertype IS NOT DISTINCT FROM p_containertype
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.containerrelate
WHERE objectid = p_objectid 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 fieldseeker.containerrelate
WHERE objectid = p_objectid;
-- Insert new version
INSERT INTO fieldseeker.containerrelate (
objectid,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
inspsampleid,
mosquitoinspid,
treatmentid,
containertype,
creationdate,
creator,
editdate,
editor,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_inspsampleid,
p_mosquitoinspid,
p_treatmentid,
p_containertype,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_fieldscoutinglog(
p_objectid bigint,
p_status smallint,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.fieldscoutinglog lv
WHERE lv.objectid = p_objectid
AND lv.status IS NOT DISTINCT FROM p_status
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.fieldscoutinglog
WHERE objectid = p_objectid 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 fieldseeker.fieldscoutinglog
WHERE objectid = p_objectid;
-- Insert new version
INSERT INTO fieldseeker.fieldscoutinglog (
objectid,
status,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
creationdate,
creator,
editdate,
editor,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_status,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_habitatrelate(
p_objectid bigint,
p_foreign_id uuid,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_habitattype varchar,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.habitatrelate lv
WHERE lv.objectid = p_objectid
AND lv.foreign_id IS NOT DISTINCT FROM p_foreign_id
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.habitattype IS NOT DISTINCT FROM p_habitattype
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.habitatrelate
WHERE objectid = p_objectid 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 fieldseeker.habitatrelate
WHERE objectid = p_objectid;
-- Insert new version
INSERT INTO fieldseeker.habitatrelate (
objectid,
foreign_id,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
habitattype,
creationdate,
creator,
editdate,
editor,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_foreign_id,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_habitattype,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_inspectionsampledetail(
p_objectid bigint,
p_inspsample_id uuid,
p_fieldspecies varchar,
p_flarvcount smallint,
p_fpupcount smallint,
p_feggcount smallint,
p_flstages varchar,
p_fdomstage varchar,
p_fadultact varchar,
p_labspecies varchar,
p_llarvcount smallint,
p_lpupcount smallint,
p_leggcount smallint,
p_ldomstage varchar,
p_comments varchar,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_processed smallint,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.inspectionsampledetail lv
WHERE lv.objectid = p_objectid
AND lv.inspsample_id IS NOT DISTINCT FROM p_inspsample_id
AND lv.fieldspecies IS NOT DISTINCT FROM p_fieldspecies
AND lv.flarvcount IS NOT DISTINCT FROM p_flarvcount
AND lv.fpupcount IS NOT DISTINCT FROM p_fpupcount
AND lv.feggcount IS NOT DISTINCT FROM p_feggcount
AND lv.flstages IS NOT DISTINCT FROM p_flstages
AND lv.fdomstage IS NOT DISTINCT FROM p_fdomstage
AND lv.fadultact IS NOT DISTINCT FROM p_fadultact
AND lv.labspecies IS NOT DISTINCT FROM p_labspecies
AND lv.llarvcount IS NOT DISTINCT FROM p_llarvcount
AND lv.lpupcount IS NOT DISTINCT FROM p_lpupcount
AND lv.leggcount IS NOT DISTINCT FROM p_leggcount
AND lv.ldomstage IS NOT DISTINCT FROM p_ldomstage
AND lv.comments IS NOT DISTINCT FROM p_comments
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.processed IS NOT DISTINCT FROM p_processed
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.inspectionsampledetail
WHERE objectid = p_objectid 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 fieldseeker.inspectionsampledetail
WHERE objectid = p_objectid;
-- Insert new version
INSERT INTO fieldseeker.inspectionsampledetail (
objectid,
inspsample_id,
fieldspecies,
flarvcount,
fpupcount,
feggcount,
flstages,
fdomstage,
fadultact,
labspecies,
llarvcount,
lpupcount,
leggcount,
ldomstage,
comments,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
processed,
creationdate,
creator,
editdate,
editor,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_inspsample_id,
p_fieldspecies,
p_flarvcount,
p_fpupcount,
p_feggcount,
p_flstages,
p_fdomstage,
p_fadultact,
p_labspecies,
p_llarvcount,
p_lpupcount,
p_leggcount,
p_ldomstage,
p_comments,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_processed,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_inspectionsample(
p_objectid bigint,
p_insp_id uuid,
p_sampleid varchar,
p_processed smallint,
p_idbytech varchar,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.inspectionsample lv
WHERE lv.objectid = p_objectid
AND lv.insp_id IS NOT DISTINCT FROM p_insp_id
AND lv.sampleid IS NOT DISTINCT FROM p_sampleid
AND lv.processed IS NOT DISTINCT FROM p_processed
AND lv.idbytech IS NOT DISTINCT FROM p_idbytech
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.inspectionsample
WHERE objectid = p_objectid 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 fieldseeker.inspectionsample
WHERE objectid = p_objectid;
-- Insert new version
INSERT INTO fieldseeker.inspectionsample (
objectid,
insp_id,
sampleid,
processed,
idbytech,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
creationdate,
creator,
editdate,
editor,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_insp_id,
p_sampleid,
p_processed,
p_idbytech,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_linelocation(
p_objectid bigint,
p_name varchar,
p_zone varchar,
p_habitat varchar,
p_priority varchar,
p_usetype varchar,
p_active smallint,
p_description varchar,
p_accessdesc varchar,
p_comments varchar,
p_symbology varchar,
p_externalid varchar,
p_acres double precision,
p_nextactiondatescheduled timestamp,
p_larvinspectinterval smallint,
p_length_ft double precision,
p_width_ft double precision,
p_zone2 varchar,
p_locationnumber integer,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_lastinspectdate timestamp,
p_lastinspectbreeding varchar,
p_lastinspectavglarvae double precision,
p_lastinspectavgpupae double precision,
p_lastinspectlstages varchar,
p_lastinspectactiontaken varchar,
p_lastinspectfieldspecies varchar,
p_lasttreatdate timestamp,
p_lasttreatproduct varchar,
p_lasttreatqty double precision,
p_lasttreatqtyunit varchar,
p_hectares double precision,
p_lastinspectactivity varchar,
p_lasttreatactivity varchar,
p_length_meters double precision,
p_width_meters double precision,
p_lastinspectconditions varchar,
p_waterorigin varchar,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_jurisdiction varchar,
p_shape__length double precision,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.linelocation lv
WHERE lv.objectid = p_objectid
AND lv.name IS NOT DISTINCT FROM p_name
AND lv.zone IS NOT DISTINCT FROM p_zone
AND lv.habitat IS NOT DISTINCT FROM p_habitat
AND lv.priority IS NOT DISTINCT FROM p_priority
AND lv.usetype IS NOT DISTINCT FROM p_usetype
AND lv.active IS NOT DISTINCT FROM p_active
AND lv.description IS NOT DISTINCT FROM p_description
AND lv.accessdesc IS NOT DISTINCT FROM p_accessdesc
AND lv.comments IS NOT DISTINCT FROM p_comments
AND lv.symbology IS NOT DISTINCT FROM p_symbology
AND lv.externalid IS NOT DISTINCT FROM p_externalid
AND lv.acres IS NOT DISTINCT FROM p_acres
AND lv.nextactiondatescheduled IS NOT DISTINCT FROM p_nextactiondatescheduled
AND lv.larvinspectinterval IS NOT DISTINCT FROM p_larvinspectinterval
AND lv.length_ft IS NOT DISTINCT FROM p_length_ft
AND lv.width_ft IS NOT DISTINCT FROM p_width_ft
AND lv.zone2 IS NOT DISTINCT FROM p_zone2
AND lv.locationnumber IS NOT DISTINCT FROM p_locationnumber
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.lastinspectdate IS NOT DISTINCT FROM p_lastinspectdate
AND lv.lastinspectbreeding IS NOT DISTINCT FROM p_lastinspectbreeding
AND lv.lastinspectavglarvae IS NOT DISTINCT FROM p_lastinspectavglarvae
AND lv.lastinspectavgpupae IS NOT DISTINCT FROM p_lastinspectavgpupae
AND lv.lastinspectlstages IS NOT DISTINCT FROM p_lastinspectlstages
AND lv.lastinspectactiontaken IS NOT DISTINCT FROM p_lastinspectactiontaken
AND lv.lastinspectfieldspecies IS NOT DISTINCT FROM p_lastinspectfieldspecies
AND lv.lasttreatdate IS NOT DISTINCT FROM p_lasttreatdate
AND lv.lasttreatproduct IS NOT DISTINCT FROM p_lasttreatproduct
AND lv.lasttreatqty IS NOT DISTINCT FROM p_lasttreatqty
AND lv.lasttreatqtyunit IS NOT DISTINCT FROM p_lasttreatqtyunit
AND lv.hectares IS NOT DISTINCT FROM p_hectares
AND lv.lastinspectactivity IS NOT DISTINCT FROM p_lastinspectactivity
AND lv.lasttreatactivity IS NOT DISTINCT FROM p_lasttreatactivity
AND lv.length_meters IS NOT DISTINCT FROM p_length_meters
AND lv.width_meters IS NOT DISTINCT FROM p_width_meters
AND lv.lastinspectconditions IS NOT DISTINCT FROM p_lastinspectconditions
AND lv.waterorigin IS NOT DISTINCT FROM p_waterorigin
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.jurisdiction IS NOT DISTINCT FROM p_jurisdiction
AND lv.shape__length IS NOT DISTINCT FROM p_shape__length
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.linelocation
WHERE objectid = p_objectid 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 fieldseeker.linelocation
WHERE objectid = p_objectid;
-- Insert new version
INSERT INTO fieldseeker.linelocation (
objectid,
name,
zone,
habitat,
priority,
usetype,
active,
description,
accessdesc,
comments,
symbology,
externalid,
acres,
nextactiondatescheduled,
larvinspectinterval,
length_ft,
width_ft,
zone2,
locationnumber,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
lastinspectdate,
lastinspectbreeding,
lastinspectavglarvae,
lastinspectavgpupae,
lastinspectlstages,
lastinspectactiontaken,
lastinspectfieldspecies,
lasttreatdate,
lasttreatproduct,
lasttreatqty,
lasttreatqtyunit,
hectares,
lastinspectactivity,
lasttreatactivity,
length_meters,
width_meters,
lastinspectconditions,
waterorigin,
creationdate,
creator,
editdate,
editor,
jurisdiction,
shape__length,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_name,
p_zone,
p_habitat,
p_priority,
p_usetype,
p_active,
p_description,
p_accessdesc,
p_comments,
p_symbology,
p_externalid,
p_acres,
p_nextactiondatescheduled,
p_larvinspectinterval,
p_length_ft,
p_width_ft,
p_zone2,
p_locationnumber,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_lastinspectdate,
p_lastinspectbreeding,
p_lastinspectavglarvae,
p_lastinspectavgpupae,
p_lastinspectlstages,
p_lastinspectactiontaken,
p_lastinspectfieldspecies,
p_lasttreatdate,
p_lasttreatproduct,
p_lasttreatqty,
p_lasttreatqtyunit,
p_hectares,
p_lastinspectactivity,
p_lasttreatactivity,
p_length_meters,
p_width_meters,
p_lastinspectconditions,
p_waterorigin,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_jurisdiction,
p_shape__length,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_locationtracking(
p_objectid bigint,
p_accuracy double precision,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_globalid uuid,
p_fieldtech varchar,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.locationtracking lv
WHERE lv.objectid = p_objectid
AND lv.accuracy IS NOT DISTINCT FROM p_accuracy
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.fieldtech IS NOT DISTINCT FROM p_fieldtech
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.locationtracking
WHERE objectid = p_objectid 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 fieldseeker.locationtracking
WHERE objectid = p_objectid;
-- Insert new version
INSERT INTO fieldseeker.locationtracking (
objectid,
accuracy,
created_user,
created_date,
last_edited_user,
last_edited_date,
globalid,
fieldtech,
creationdate,
creator,
editdate,
editor,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_accuracy,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_globalid,
p_fieldtech,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_mosquitoinspection(
p_objectid bigint,
p_numdips smallint,
p_activity varchar,
p_breeding varchar,
p_totlarvae smallint,
p_totpupae smallint,
p_eggs smallint,
p_posdips smallint,
p_adultact varchar,
p_lstages varchar,
p_domstage varchar,
p_actiontaken varchar,
p_comments varchar,
p_avetemp double precision,
p_windspeed double precision,
p_raingauge double precision,
p_startdatetime timestamp,
p_enddatetime timestamp,
p_winddir varchar,
p_avglarvae double precision,
p_avgpupae double precision,
p_reviewed smallint,
p_reviewedby varchar,
p_revieweddate timestamp,
p_locationname varchar,
p_zone varchar,
p_recordstatus smallint,
p_zone2 varchar,
p_personalcontact smallint,
p_tirecount smallint,
p_cbcount smallint,
p_containercount smallint,
p_fieldspecies varchar,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_linelocid uuid,
p_pointlocid uuid,
p_polygonlocid uuid,
p_srid uuid,
p_fieldtech varchar,
p_larvaepresent smallint,
p_pupaepresent smallint,
p_sdid uuid,
p_sitecond varchar,
p_positivecontainercount smallint,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_jurisdiction varchar,
p_visualmonitoring smallint,
p_vmcomments varchar,
p_adminaction varchar,
p_ptaid uuid,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.mosquitoinspection lv
WHERE lv.objectid = p_objectid
AND lv.numdips IS NOT DISTINCT FROM p_numdips
AND lv.activity IS NOT DISTINCT FROM p_activity
AND lv.breeding IS NOT DISTINCT FROM p_breeding
AND lv.totlarvae IS NOT DISTINCT FROM p_totlarvae
AND lv.totpupae IS NOT DISTINCT FROM p_totpupae
AND lv.eggs IS NOT DISTINCT FROM p_eggs
AND lv.posdips IS NOT DISTINCT FROM p_posdips
AND lv.adultact IS NOT DISTINCT FROM p_adultact
AND lv.lstages IS NOT DISTINCT FROM p_lstages
AND lv.domstage IS NOT DISTINCT FROM p_domstage
AND lv.actiontaken IS NOT DISTINCT FROM p_actiontaken
AND lv.comments IS NOT DISTINCT FROM p_comments
AND lv.avetemp IS NOT DISTINCT FROM p_avetemp
AND lv.windspeed IS NOT DISTINCT FROM p_windspeed
AND lv.raingauge IS NOT DISTINCT FROM p_raingauge
AND lv.startdatetime IS NOT DISTINCT FROM p_startdatetime
AND lv.enddatetime IS NOT DISTINCT FROM p_enddatetime
AND lv.winddir IS NOT DISTINCT FROM p_winddir
AND lv.avglarvae IS NOT DISTINCT FROM p_avglarvae
AND lv.avgpupae IS NOT DISTINCT FROM p_avgpupae
AND lv.reviewed IS NOT DISTINCT FROM p_reviewed
AND lv.reviewedby IS NOT DISTINCT FROM p_reviewedby
AND lv.revieweddate IS NOT DISTINCT FROM p_revieweddate
AND lv.locationname IS NOT DISTINCT FROM p_locationname
AND lv.zone IS NOT DISTINCT FROM p_zone
AND lv.recordstatus IS NOT DISTINCT FROM p_recordstatus
AND lv.zone2 IS NOT DISTINCT FROM p_zone2
AND lv.personalcontact IS NOT DISTINCT FROM p_personalcontact
AND lv.tirecount IS NOT DISTINCT FROM p_tirecount
AND lv.cbcount IS NOT DISTINCT FROM p_cbcount
AND lv.containercount IS NOT DISTINCT FROM p_containercount
AND lv.fieldspecies IS NOT DISTINCT FROM p_fieldspecies
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.linelocid IS NOT DISTINCT FROM p_linelocid
AND lv.pointlocid IS NOT DISTINCT FROM p_pointlocid
AND lv.polygonlocid IS NOT DISTINCT FROM p_polygonlocid
AND lv.srid IS NOT DISTINCT FROM p_srid
AND lv.fieldtech IS NOT DISTINCT FROM p_fieldtech
AND lv.larvaepresent IS NOT DISTINCT FROM p_larvaepresent
AND lv.pupaepresent IS NOT DISTINCT FROM p_pupaepresent
AND lv.sdid IS NOT DISTINCT FROM p_sdid
AND lv.sitecond IS NOT DISTINCT FROM p_sitecond
AND lv.positivecontainercount IS NOT DISTINCT FROM p_positivecontainercount
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.jurisdiction IS NOT DISTINCT FROM p_jurisdiction
AND lv.visualmonitoring IS NOT DISTINCT FROM p_visualmonitoring
AND lv.vmcomments IS NOT DISTINCT FROM p_vmcomments
AND lv.adminaction IS NOT DISTINCT FROM p_adminaction
AND lv.ptaid IS NOT DISTINCT FROM p_ptaid
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.mosquitoinspection
WHERE objectid = p_objectid 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 fieldseeker.mosquitoinspection
WHERE objectid = p_objectid;
-- Insert new version
INSERT INTO fieldseeker.mosquitoinspection (
objectid,
numdips,
activity,
breeding,
totlarvae,
totpupae,
eggs,
posdips,
adultact,
lstages,
domstage,
actiontaken,
comments,
avetemp,
windspeed,
raingauge,
startdatetime,
enddatetime,
winddir,
avglarvae,
avgpupae,
reviewed,
reviewedby,
revieweddate,
locationname,
zone,
recordstatus,
zone2,
personalcontact,
tirecount,
cbcount,
containercount,
fieldspecies,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
linelocid,
pointlocid,
polygonlocid,
srid,
fieldtech,
larvaepresent,
pupaepresent,
sdid,
sitecond,
positivecontainercount,
creationdate,
creator,
editdate,
editor,
jurisdiction,
visualmonitoring,
vmcomments,
adminaction,
ptaid,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_numdips,
p_activity,
p_breeding,
p_totlarvae,
p_totpupae,
p_eggs,
p_posdips,
p_adultact,
p_lstages,
p_domstage,
p_actiontaken,
p_comments,
p_avetemp,
p_windspeed,
p_raingauge,
p_startdatetime,
p_enddatetime,
p_winddir,
p_avglarvae,
p_avgpupae,
p_reviewed,
p_reviewedby,
p_revieweddate,
p_locationname,
p_zone,
p_recordstatus,
p_zone2,
p_personalcontact,
p_tirecount,
p_cbcount,
p_containercount,
p_fieldspecies,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_linelocid,
p_pointlocid,
p_polygonlocid,
p_srid,
p_fieldtech,
p_larvaepresent,
p_pupaepresent,
p_sdid,
p_sitecond,
p_positivecontainercount,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_jurisdiction,
p_visualmonitoring,
p_vmcomments,
p_adminaction,
p_ptaid,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_pointlocation(
p_objectid bigint,
p_name varchar,
p_zone varchar,
p_habitat varchar,
p_priority varchar,
p_usetype varchar,
p_active smallint,
p_description varchar,
p_accessdesc varchar,
p_comments varchar,
p_symbology varchar,
p_externalid varchar,
p_nextactiondatescheduled timestamp,
p_larvinspectinterval smallint,
p_zone2 varchar,
p_locationnumber integer,
p_globalid uuid,
p_stype varchar,
p_lastinspectdate timestamp,
p_lastinspectbreeding varchar,
p_lastinspectavglarvae double precision,
p_lastinspectavgpupae double precision,
p_lastinspectlstages varchar,
p_lastinspectactiontaken varchar,
p_lastinspectfieldspecies varchar,
p_lasttreatdate timestamp,
p_lasttreatproduct varchar,
p_lasttreatqty double precision,
p_lasttreatqtyunit varchar,
p_lastinspectactivity varchar,
p_lasttreatactivity varchar,
p_lastinspectconditions varchar,
p_waterorigin varchar,
p_x double precision,
p_y double precision,
p_assignedtech varchar,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_jurisdiction varchar,
p_deactivate_reason varchar,
p_scalarpriority integer,
p_sourcestatus varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.pointlocation lv
WHERE lv.objectid = p_objectid
AND lv.name IS NOT DISTINCT FROM p_name
AND lv.zone IS NOT DISTINCT FROM p_zone
AND lv.habitat IS NOT DISTINCT FROM p_habitat
AND lv.priority IS NOT DISTINCT FROM p_priority
AND lv.usetype IS NOT DISTINCT FROM p_usetype
AND lv.active IS NOT DISTINCT FROM p_active
AND lv.description IS NOT DISTINCT FROM p_description
AND lv.accessdesc IS NOT DISTINCT FROM p_accessdesc
AND lv.comments IS NOT DISTINCT FROM p_comments
AND lv.symbology IS NOT DISTINCT FROM p_symbology
AND lv.externalid IS NOT DISTINCT FROM p_externalid
AND lv.nextactiondatescheduled IS NOT DISTINCT FROM p_nextactiondatescheduled
AND lv.larvinspectinterval IS NOT DISTINCT FROM p_larvinspectinterval
AND lv.zone2 IS NOT DISTINCT FROM p_zone2
AND lv.locationnumber IS NOT DISTINCT FROM p_locationnumber
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.stype IS NOT DISTINCT FROM p_stype
AND lv.lastinspectdate IS NOT DISTINCT FROM p_lastinspectdate
AND lv.lastinspectbreeding IS NOT DISTINCT FROM p_lastinspectbreeding
AND lv.lastinspectavglarvae IS NOT DISTINCT FROM p_lastinspectavglarvae
AND lv.lastinspectavgpupae IS NOT DISTINCT FROM p_lastinspectavgpupae
AND lv.lastinspectlstages IS NOT DISTINCT FROM p_lastinspectlstages
AND lv.lastinspectactiontaken IS NOT DISTINCT FROM p_lastinspectactiontaken
AND lv.lastinspectfieldspecies IS NOT DISTINCT FROM p_lastinspectfieldspecies
AND lv.lasttreatdate IS NOT DISTINCT FROM p_lasttreatdate
AND lv.lasttreatproduct IS NOT DISTINCT FROM p_lasttreatproduct
AND lv.lasttreatqty IS NOT DISTINCT FROM p_lasttreatqty
AND lv.lasttreatqtyunit IS NOT DISTINCT FROM p_lasttreatqtyunit
AND lv.lastinspectactivity IS NOT DISTINCT FROM p_lastinspectactivity
AND lv.lasttreatactivity IS NOT DISTINCT FROM p_lasttreatactivity
AND lv.lastinspectconditions IS NOT DISTINCT FROM p_lastinspectconditions
AND lv.waterorigin IS NOT DISTINCT FROM p_waterorigin
AND lv.x IS NOT DISTINCT FROM p_x
AND lv.y IS NOT DISTINCT FROM p_y
AND lv.assignedtech IS NOT DISTINCT FROM p_assignedtech
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.jurisdiction IS NOT DISTINCT FROM p_jurisdiction
AND lv.deactivate_reason IS NOT DISTINCT FROM p_deactivate_reason
AND lv.scalarpriority IS NOT DISTINCT FROM p_scalarpriority
AND lv.sourcestatus IS NOT DISTINCT FROM p_sourcestatus
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.pointlocation
WHERE objectid = p_objectid 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 fieldseeker.pointlocation
WHERE objectid = p_objectid;
-- Insert new version
INSERT INTO fieldseeker.pointlocation (
objectid,
name,
zone,
habitat,
priority,
usetype,
active,
description,
accessdesc,
comments,
symbology,
externalid,
nextactiondatescheduled,
larvinspectinterval,
zone2,
locationnumber,
globalid,
stype,
lastinspectdate,
lastinspectbreeding,
lastinspectavglarvae,
lastinspectavgpupae,
lastinspectlstages,
lastinspectactiontaken,
lastinspectfieldspecies,
lasttreatdate,
lasttreatproduct,
lasttreatqty,
lasttreatqtyunit,
lastinspectactivity,
lasttreatactivity,
lastinspectconditions,
waterorigin,
x,
y,
assignedtech,
creationdate,
creator,
editdate,
editor,
jurisdiction,
deactivate_reason,
scalarpriority,
sourcestatus,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_name,
p_zone,
p_habitat,
p_priority,
p_usetype,
p_active,
p_description,
p_accessdesc,
p_comments,
p_symbology,
p_externalid,
p_nextactiondatescheduled,
p_larvinspectinterval,
p_zone2,
p_locationnumber,
p_globalid,
p_stype,
p_lastinspectdate,
p_lastinspectbreeding,
p_lastinspectavglarvae,
p_lastinspectavgpupae,
p_lastinspectlstages,
p_lastinspectactiontaken,
p_lastinspectfieldspecies,
p_lasttreatdate,
p_lasttreatproduct,
p_lasttreatqty,
p_lasttreatqtyunit,
p_lastinspectactivity,
p_lasttreatactivity,
p_lastinspectconditions,
p_waterorigin,
p_x,
p_y,
p_assignedtech,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_jurisdiction,
p_deactivate_reason,
p_scalarpriority,
p_sourcestatus,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_polygonlocation(
p_objectid bigint,
p_name varchar,
p_zone varchar,
p_habitat varchar,
p_priority varchar,
p_usetype varchar,
p_active smallint,
p_description varchar,
p_accessdesc varchar,
p_comments varchar,
p_symbology varchar,
p_externalid varchar,
p_acres double precision,
p_nextactiondatescheduled timestamp,
p_larvinspectinterval smallint,
p_zone2 varchar,
p_locationnumber integer,
p_globalid uuid,
p_lastinspectdate timestamp,
p_lastinspectbreeding varchar,
p_lastinspectavglarvae double precision,
p_lastinspectavgpupae double precision,
p_lastinspectlstages varchar,
p_lastinspectactiontaken varchar,
p_lastinspectfieldspecies varchar,
p_lasttreatdate timestamp,
p_lasttreatproduct varchar,
p_lasttreatqty double precision,
p_lasttreatqtyunit varchar,
p_hectares double precision,
p_lastinspectactivity varchar,
p_lasttreatactivity varchar,
p_lastinspectconditions varchar,
p_waterorigin varchar,
p_filter varchar,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_jurisdiction varchar,
p_shape__area double precision,
p_shape__length double precision,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.polygonlocation lv
WHERE lv.objectid = p_objectid
AND lv.name IS NOT DISTINCT FROM p_name
AND lv.zone IS NOT DISTINCT FROM p_zone
AND lv.habitat IS NOT DISTINCT FROM p_habitat
AND lv.priority IS NOT DISTINCT FROM p_priority
AND lv.usetype IS NOT DISTINCT FROM p_usetype
AND lv.active IS NOT DISTINCT FROM p_active
AND lv.description IS NOT DISTINCT FROM p_description
AND lv.accessdesc IS NOT DISTINCT FROM p_accessdesc
AND lv.comments IS NOT DISTINCT FROM p_comments
AND lv.symbology IS NOT DISTINCT FROM p_symbology
AND lv.externalid IS NOT DISTINCT FROM p_externalid
AND lv.acres IS NOT DISTINCT FROM p_acres
AND lv.nextactiondatescheduled IS NOT DISTINCT FROM p_nextactiondatescheduled
AND lv.larvinspectinterval IS NOT DISTINCT FROM p_larvinspectinterval
AND lv.zone2 IS NOT DISTINCT FROM p_zone2
AND lv.locationnumber IS NOT DISTINCT FROM p_locationnumber
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.lastinspectdate IS NOT DISTINCT FROM p_lastinspectdate
AND lv.lastinspectbreeding IS NOT DISTINCT FROM p_lastinspectbreeding
AND lv.lastinspectavglarvae IS NOT DISTINCT FROM p_lastinspectavglarvae
AND lv.lastinspectavgpupae IS NOT DISTINCT FROM p_lastinspectavgpupae
AND lv.lastinspectlstages IS NOT DISTINCT FROM p_lastinspectlstages
AND lv.lastinspectactiontaken IS NOT DISTINCT FROM p_lastinspectactiontaken
AND lv.lastinspectfieldspecies IS NOT DISTINCT FROM p_lastinspectfieldspecies
AND lv.lasttreatdate IS NOT DISTINCT FROM p_lasttreatdate
AND lv.lasttreatproduct IS NOT DISTINCT FROM p_lasttreatproduct
AND lv.lasttreatqty IS NOT DISTINCT FROM p_lasttreatqty
AND lv.lasttreatqtyunit IS NOT DISTINCT FROM p_lasttreatqtyunit
AND lv.hectares IS NOT DISTINCT FROM p_hectares
AND lv.lastinspectactivity IS NOT DISTINCT FROM p_lastinspectactivity
AND lv.lasttreatactivity IS NOT DISTINCT FROM p_lasttreatactivity
AND lv.lastinspectconditions IS NOT DISTINCT FROM p_lastinspectconditions
AND lv.waterorigin IS NOT DISTINCT FROM p_waterorigin
AND lv.filter IS NOT DISTINCT FROM p_filter
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.jurisdiction IS NOT DISTINCT FROM p_jurisdiction
AND lv.shape__area IS NOT DISTINCT FROM p_shape__area
AND lv.shape__length IS NOT DISTINCT FROM p_shape__length
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.polygonlocation
WHERE objectid = p_objectid 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 fieldseeker.polygonlocation
WHERE objectid = p_objectid;
-- Insert new version
INSERT INTO fieldseeker.polygonlocation (
objectid,
name,
zone,
habitat,
priority,
usetype,
active,
description,
accessdesc,
comments,
symbology,
externalid,
acres,
nextactiondatescheduled,
larvinspectinterval,
zone2,
locationnumber,
globalid,
lastinspectdate,
lastinspectbreeding,
lastinspectavglarvae,
lastinspectavgpupae,
lastinspectlstages,
lastinspectactiontaken,
lastinspectfieldspecies,
lasttreatdate,
lasttreatproduct,
lasttreatqty,
lasttreatqtyunit,
hectares,
lastinspectactivity,
lasttreatactivity,
lastinspectconditions,
waterorigin,
filter,
creationdate,
creator,
editdate,
editor,
jurisdiction,
shape__area,
shape__length,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_name,
p_zone,
p_habitat,
p_priority,
p_usetype,
p_active,
p_description,
p_accessdesc,
p_comments,
p_symbology,
p_externalid,
p_acres,
p_nextactiondatescheduled,
p_larvinspectinterval,
p_zone2,
p_locationnumber,
p_globalid,
p_lastinspectdate,
p_lastinspectbreeding,
p_lastinspectavglarvae,
p_lastinspectavgpupae,
p_lastinspectlstages,
p_lastinspectactiontaken,
p_lastinspectfieldspecies,
p_lasttreatdate,
p_lasttreatproduct,
p_lasttreatqty,
p_lasttreatqtyunit,
p_hectares,
p_lastinspectactivity,
p_lasttreatactivity,
p_lastinspectconditions,
p_waterorigin,
p_filter,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_jurisdiction,
p_shape__area,
p_shape__length,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_pooldetail(
p_objectid bigint,
p_trapdata_id uuid,
p_pool_id uuid,
p_species varchar,
p_females smallint,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.pooldetail lv
WHERE lv.objectid = p_objectid
AND lv.trapdata_id IS NOT DISTINCT FROM p_trapdata_id
AND lv.pool_id IS NOT DISTINCT FROM p_pool_id
AND lv.species IS NOT DISTINCT FROM p_species
AND lv.females IS NOT DISTINCT FROM p_females
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.pooldetail
WHERE objectid = p_objectid 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 fieldseeker.pooldetail
WHERE objectid = p_objectid;
-- Insert new version
INSERT INTO fieldseeker.pooldetail (
objectid,
trapdata_id,
pool_id,
species,
females,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
creationdate,
creator,
editdate,
editor,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_trapdata_id,
p_pool_id,
p_species,
p_females,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_pool(
p_objectid bigint,
p_trapdata_id uuid,
p_datesent timestamp,
p_survtech varchar,
p_datetested timestamp,
p_testtech varchar,
p_comments varchar,
p_sampleid varchar,
p_processed smallint,
p_lab_id uuid,
p_testmethod varchar,
p_diseasetested varchar,
p_diseasepos varchar,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_lab varchar,
p_poolyear smallint,
p_gatewaysync smallint,
p_vectorsurvcollectionid varchar,
p_vectorsurvpoolid varchar,
p_vectorsurvtrapdataid varchar,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.pool lv
WHERE lv.objectid = p_objectid
AND lv.trapdata_id IS NOT DISTINCT FROM p_trapdata_id
AND lv.datesent IS NOT DISTINCT FROM p_datesent
AND lv.survtech IS NOT DISTINCT FROM p_survtech
AND lv.datetested IS NOT DISTINCT FROM p_datetested
AND lv.testtech IS NOT DISTINCT FROM p_testtech
AND lv.comments IS NOT DISTINCT FROM p_comments
AND lv.sampleid IS NOT DISTINCT FROM p_sampleid
AND lv.processed IS NOT DISTINCT FROM p_processed
AND lv.lab_id IS NOT DISTINCT FROM p_lab_id
AND lv.testmethod IS NOT DISTINCT FROM p_testmethod
AND lv.diseasetested IS NOT DISTINCT FROM p_diseasetested
AND lv.diseasepos IS NOT DISTINCT FROM p_diseasepos
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.lab IS NOT DISTINCT FROM p_lab
AND lv.poolyear IS NOT DISTINCT FROM p_poolyear
AND lv.gatewaysync IS NOT DISTINCT FROM p_gatewaysync
AND lv.vectorsurvcollectionid IS NOT DISTINCT FROM p_vectorsurvcollectionid
AND lv.vectorsurvpoolid IS NOT DISTINCT FROM p_vectorsurvpoolid
AND lv.vectorsurvtrapdataid IS NOT DISTINCT FROM p_vectorsurvtrapdataid
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.pool
WHERE objectid = p_objectid 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 fieldseeker.pool
WHERE objectid = p_objectid;
-- Insert new version
INSERT INTO fieldseeker.pool (
objectid,
trapdata_id,
datesent,
survtech,
datetested,
testtech,
comments,
sampleid,
processed,
lab_id,
testmethod,
diseasetested,
diseasepos,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
lab,
poolyear,
gatewaysync,
vectorsurvcollectionid,
vectorsurvpoolid,
vectorsurvtrapdataid,
creationdate,
creator,
editdate,
editor,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_trapdata_id,
p_datesent,
p_survtech,
p_datetested,
p_testtech,
p_comments,
p_sampleid,
p_processed,
p_lab_id,
p_testmethod,
p_diseasetested,
p_diseasepos,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_lab,
p_poolyear,
p_gatewaysync,
p_vectorsurvcollectionid,
p_vectorsurvpoolid,
p_vectorsurvtrapdataid,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_proposedtreatmentarea(
p_objectid bigint,
p_method varchar,
p_comments varchar,
p_zone varchar,
p_reviewed smallint,
p_reviewedby varchar,
p_revieweddate timestamp,
p_zone2 varchar,
p_completeddate timestamp,
p_completedby varchar,
p_completed smallint,
p_issprayroute smallint,
p_name varchar,
p_acres double precision,
p_globalid uuid,
p_exported smallint,
p_targetproduct varchar,
p_targetapprate double precision,
p_hectares double precision,
p_lasttreatactivity varchar,
p_lasttreatdate timestamp,
p_lasttreatproduct varchar,
p_lasttreatqty double precision,
p_lasttreatqtyunit varchar,
p_priority varchar,
p_duedate timestamp,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_targetspecies varchar,
p_shape__area double precision,
p_shape__length double precision,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.proposedtreatmentarea lv
WHERE lv.objectid = p_objectid
AND lv.method IS NOT DISTINCT FROM p_method
AND lv.comments IS NOT DISTINCT FROM p_comments
AND lv.zone IS NOT DISTINCT FROM p_zone
AND lv.reviewed IS NOT DISTINCT FROM p_reviewed
AND lv.reviewedby IS NOT DISTINCT FROM p_reviewedby
AND lv.revieweddate IS NOT DISTINCT FROM p_revieweddate
AND lv.zone2 IS NOT DISTINCT FROM p_zone2
AND lv.completeddate IS NOT DISTINCT FROM p_completeddate
AND lv.completedby IS NOT DISTINCT FROM p_completedby
AND lv.completed IS NOT DISTINCT FROM p_completed
AND lv.issprayroute IS NOT DISTINCT FROM p_issprayroute
AND lv.name IS NOT DISTINCT FROM p_name
AND lv.acres IS NOT DISTINCT FROM p_acres
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.exported IS NOT DISTINCT FROM p_exported
AND lv.targetproduct IS NOT DISTINCT FROM p_targetproduct
AND lv.targetapprate IS NOT DISTINCT FROM p_targetapprate
AND lv.hectares IS NOT DISTINCT FROM p_hectares
AND lv.lasttreatactivity IS NOT DISTINCT FROM p_lasttreatactivity
AND lv.lasttreatdate IS NOT DISTINCT FROM p_lasttreatdate
AND lv.lasttreatproduct IS NOT DISTINCT FROM p_lasttreatproduct
AND lv.lasttreatqty IS NOT DISTINCT FROM p_lasttreatqty
AND lv.lasttreatqtyunit IS NOT DISTINCT FROM p_lasttreatqtyunit
AND lv.priority IS NOT DISTINCT FROM p_priority
AND lv.duedate IS NOT DISTINCT FROM p_duedate
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.targetspecies IS NOT DISTINCT FROM p_targetspecies
AND lv.shape__area IS NOT DISTINCT FROM p_shape__area
AND lv.shape__length IS NOT DISTINCT FROM p_shape__length
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.proposedtreatmentarea
WHERE objectid = p_objectid 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 fieldseeker.proposedtreatmentarea
WHERE objectid = p_objectid;
-- Insert new version
INSERT INTO fieldseeker.proposedtreatmentarea (
objectid,
method,
comments,
zone,
reviewed,
reviewedby,
revieweddate,
zone2,
completeddate,
completedby,
completed,
issprayroute,
name,
acres,
globalid,
exported,
targetproduct,
targetapprate,
hectares,
lasttreatactivity,
lasttreatdate,
lasttreatproduct,
lasttreatqty,
lasttreatqtyunit,
priority,
duedate,
creationdate,
creator,
editdate,
editor,
targetspecies,
shape__area,
shape__length,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_method,
p_comments,
p_zone,
p_reviewed,
p_reviewedby,
p_revieweddate,
p_zone2,
p_completeddate,
p_completedby,
p_completed,
p_issprayroute,
p_name,
p_acres,
p_globalid,
p_exported,
p_targetproduct,
p_targetapprate,
p_hectares,
p_lasttreatactivity,
p_lasttreatdate,
p_lasttreatproduct,
p_lasttreatqty,
p_lasttreatqtyunit,
p_priority,
p_duedate,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_targetspecies,
p_shape__area,
p_shape__length,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_qamosquitoinspection(
p_objectid bigint,
p_posdips smallint,
p_actiontaken varchar,
p_comments varchar,
p_avetemp double precision,
p_windspeed double precision,
p_raingauge double precision,
p_globalid uuid,
p_startdatetime timestamp,
p_enddatetime timestamp,
p_winddir varchar,
p_reviewed smallint,
p_reviewedby varchar,
p_revieweddate timestamp,
p_locationname varchar,
p_zone varchar,
p_recordstatus smallint,
p_zone2 varchar,
p_lr smallint,
p_negdips smallint,
p_totalacres double precision,
p_acresbreeding double precision,
p_fish smallint,
p_sitetype varchar,
p_breedingpotential varchar,
p_movingwater smallint,
p_nowaterever smallint,
p_mosquitohabitat varchar,
p_habvalue1 smallint,
p_habvalue1percent smallint,
p_habvalue2 smallint,
p_habvalue2percent smallint,
p_potential smallint,
p_larvaepresent smallint,
p_larvaeinsidetreatedarea smallint,
p_larvaeoutsidetreatedarea smallint,
p_larvaereason varchar,
p_aquaticorganisms varchar,
p_vegetation varchar,
p_sourcereduction varchar,
p_waterpresent smallint,
p_watermovement1 varchar,
p_watermovement1percent smallint,
p_watermovement2 varchar,
p_watermovement2percent smallint,
p_soilconditions varchar,
p_waterduration varchar,
p_watersource varchar,
p_waterconditions varchar,
p_adultactivity smallint,
p_linelocid uuid,
p_pointlocid uuid,
p_polygonlocid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_fieldtech varchar,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.qamosquitoinspection lv
WHERE lv.objectid = p_objectid
AND lv.posdips IS NOT DISTINCT FROM p_posdips
AND lv.actiontaken IS NOT DISTINCT FROM p_actiontaken
AND lv.comments IS NOT DISTINCT FROM p_comments
AND lv.avetemp IS NOT DISTINCT FROM p_avetemp
AND lv.windspeed IS NOT DISTINCT FROM p_windspeed
AND lv.raingauge IS NOT DISTINCT FROM p_raingauge
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.startdatetime IS NOT DISTINCT FROM p_startdatetime
AND lv.enddatetime IS NOT DISTINCT FROM p_enddatetime
AND lv.winddir IS NOT DISTINCT FROM p_winddir
AND lv.reviewed IS NOT DISTINCT FROM p_reviewed
AND lv.reviewedby IS NOT DISTINCT FROM p_reviewedby
AND lv.revieweddate IS NOT DISTINCT FROM p_revieweddate
AND lv.locationname IS NOT DISTINCT FROM p_locationname
AND lv.zone IS NOT DISTINCT FROM p_zone
AND lv.recordstatus IS NOT DISTINCT FROM p_recordstatus
AND lv.zone2 IS NOT DISTINCT FROM p_zone2
AND lv.lr IS NOT DISTINCT FROM p_lr
AND lv.negdips IS NOT DISTINCT FROM p_negdips
AND lv.totalacres IS NOT DISTINCT FROM p_totalacres
AND lv.acresbreeding IS NOT DISTINCT FROM p_acresbreeding
AND lv.fish IS NOT DISTINCT FROM p_fish
AND lv.sitetype IS NOT DISTINCT FROM p_sitetype
AND lv.breedingpotential IS NOT DISTINCT FROM p_breedingpotential
AND lv.movingwater IS NOT DISTINCT FROM p_movingwater
AND lv.nowaterever IS NOT DISTINCT FROM p_nowaterever
AND lv.mosquitohabitat IS NOT DISTINCT FROM p_mosquitohabitat
AND lv.habvalue1 IS NOT DISTINCT FROM p_habvalue1
AND lv.habvalue1percent IS NOT DISTINCT FROM p_habvalue1percent
AND lv.habvalue2 IS NOT DISTINCT FROM p_habvalue2
AND lv.habvalue2percent IS NOT DISTINCT FROM p_habvalue2percent
AND lv.potential IS NOT DISTINCT FROM p_potential
AND lv.larvaepresent IS NOT DISTINCT FROM p_larvaepresent
AND lv.larvaeinsidetreatedarea IS NOT DISTINCT FROM p_larvaeinsidetreatedarea
AND lv.larvaeoutsidetreatedarea IS NOT DISTINCT FROM p_larvaeoutsidetreatedarea
AND lv.larvaereason IS NOT DISTINCT FROM p_larvaereason
AND lv.aquaticorganisms IS NOT DISTINCT FROM p_aquaticorganisms
AND lv.vegetation IS NOT DISTINCT FROM p_vegetation
AND lv.sourcereduction IS NOT DISTINCT FROM p_sourcereduction
AND lv.waterpresent IS NOT DISTINCT FROM p_waterpresent
AND lv.watermovement1 IS NOT DISTINCT FROM p_watermovement1
AND lv.watermovement1percent IS NOT DISTINCT FROM p_watermovement1percent
AND lv.watermovement2 IS NOT DISTINCT FROM p_watermovement2
AND lv.watermovement2percent IS NOT DISTINCT FROM p_watermovement2percent
AND lv.soilconditions IS NOT DISTINCT FROM p_soilconditions
AND lv.waterduration IS NOT DISTINCT FROM p_waterduration
AND lv.watersource IS NOT DISTINCT FROM p_watersource
AND lv.waterconditions IS NOT DISTINCT FROM p_waterconditions
AND lv.adultactivity IS NOT DISTINCT FROM p_adultactivity
AND lv.linelocid IS NOT DISTINCT FROM p_linelocid
AND lv.pointlocid IS NOT DISTINCT FROM p_pointlocid
AND lv.polygonlocid IS NOT DISTINCT FROM p_polygonlocid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.fieldtech IS NOT DISTINCT FROM p_fieldtech
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.qamosquitoinspection
WHERE objectid = p_objectid 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 fieldseeker.qamosquitoinspection
WHERE objectid = p_objectid;
-- Insert new version
INSERT INTO fieldseeker.qamosquitoinspection (
objectid,
posdips,
actiontaken,
comments,
avetemp,
windspeed,
raingauge,
globalid,
startdatetime,
enddatetime,
winddir,
reviewed,
reviewedby,
revieweddate,
locationname,
zone,
recordstatus,
zone2,
lr,
negdips,
totalacres,
acresbreeding,
fish,
sitetype,
breedingpotential,
movingwater,
nowaterever,
mosquitohabitat,
habvalue1,
habvalue1percent,
habvalue2,
habvalue2percent,
potential,
larvaepresent,
larvaeinsidetreatedarea,
larvaeoutsidetreatedarea,
larvaereason,
aquaticorganisms,
vegetation,
sourcereduction,
waterpresent,
watermovement1,
watermovement1percent,
watermovement2,
watermovement2percent,
soilconditions,
waterduration,
watersource,
waterconditions,
adultactivity,
linelocid,
pointlocid,
polygonlocid,
created_user,
created_date,
last_edited_user,
last_edited_date,
fieldtech,
creationdate,
creator,
editdate,
editor,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_posdips,
p_actiontaken,
p_comments,
p_avetemp,
p_windspeed,
p_raingauge,
p_globalid,
p_startdatetime,
p_enddatetime,
p_winddir,
p_reviewed,
p_reviewedby,
p_revieweddate,
p_locationname,
p_zone,
p_recordstatus,
p_zone2,
p_lr,
p_negdips,
p_totalacres,
p_acresbreeding,
p_fish,
p_sitetype,
p_breedingpotential,
p_movingwater,
p_nowaterever,
p_mosquitohabitat,
p_habvalue1,
p_habvalue1percent,
p_habvalue2,
p_habvalue2percent,
p_potential,
p_larvaepresent,
p_larvaeinsidetreatedarea,
p_larvaeoutsidetreatedarea,
p_larvaereason,
p_aquaticorganisms,
p_vegetation,
p_sourcereduction,
p_waterpresent,
p_watermovement1,
p_watermovement1percent,
p_watermovement2,
p_watermovement2percent,
p_soilconditions,
p_waterduration,
p_watersource,
p_waterconditions,
p_adultactivity,
p_linelocid,
p_pointlocid,
p_polygonlocid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_fieldtech,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_rodentlocation(
p_objectid bigint,
p_locationname varchar,
p_zone varchar,
p_zone2 varchar,
p_habitat varchar,
p_priority varchar,
p_usetype varchar,
p_active smallint,
p_description varchar,
p_accessdesc varchar,
p_comments varchar,
p_symbology varchar,
p_externalid varchar,
p_nextactiondatescheduled timestamp,
p_locationnumber integer,
p_lastinspectdate timestamp,
p_lastinspectspecies varchar,
p_lastinspectaction varchar,
p_lastinspectconditions varchar,
p_lastinspectrodentevidence varchar,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_jurisdiction varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.rodentlocation lv
WHERE lv.objectid = p_objectid
AND lv.locationname IS NOT DISTINCT FROM p_locationname
AND lv.zone IS NOT DISTINCT FROM p_zone
AND lv.zone2 IS NOT DISTINCT FROM p_zone2
AND lv.habitat IS NOT DISTINCT FROM p_habitat
AND lv.priority IS NOT DISTINCT FROM p_priority
AND lv.usetype IS NOT DISTINCT FROM p_usetype
AND lv.active IS NOT DISTINCT FROM p_active
AND lv.description IS NOT DISTINCT FROM p_description
AND lv.accessdesc IS NOT DISTINCT FROM p_accessdesc
AND lv.comments IS NOT DISTINCT FROM p_comments
AND lv.symbology IS NOT DISTINCT FROM p_symbology
AND lv.externalid IS NOT DISTINCT FROM p_externalid
AND lv.nextactiondatescheduled IS NOT DISTINCT FROM p_nextactiondatescheduled
AND lv.locationnumber IS NOT DISTINCT FROM p_locationnumber
AND lv.lastinspectdate IS NOT DISTINCT FROM p_lastinspectdate
AND lv.lastinspectspecies IS NOT DISTINCT FROM p_lastinspectspecies
AND lv.lastinspectaction IS NOT DISTINCT FROM p_lastinspectaction
AND lv.lastinspectconditions IS NOT DISTINCT FROM p_lastinspectconditions
AND lv.lastinspectrodentevidence IS NOT DISTINCT FROM p_lastinspectrodentevidence
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.jurisdiction IS NOT DISTINCT FROM p_jurisdiction
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.rodentlocation
WHERE objectid = p_objectid 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 fieldseeker.rodentlocation
WHERE objectid = p_objectid;
-- Insert new version
INSERT INTO fieldseeker.rodentlocation (
objectid,
locationname,
zone,
zone2,
habitat,
priority,
usetype,
active,
description,
accessdesc,
comments,
symbology,
externalid,
nextactiondatescheduled,
locationnumber,
lastinspectdate,
lastinspectspecies,
lastinspectaction,
lastinspectconditions,
lastinspectrodentevidence,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
creationdate,
creator,
editdate,
editor,
jurisdiction,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_locationname,
p_zone,
p_zone2,
p_habitat,
p_priority,
p_usetype,
p_active,
p_description,
p_accessdesc,
p_comments,
p_symbology,
p_externalid,
p_nextactiondatescheduled,
p_locationnumber,
p_lastinspectdate,
p_lastinspectspecies,
p_lastinspectaction,
p_lastinspectconditions,
p_lastinspectrodentevidence,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_jurisdiction,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_samplecollection(
p_objectid bigint,
p_loc_id uuid,
p_startdatetime timestamp,
p_enddatetime timestamp,
p_sitecond varchar,
p_sampleid varchar,
p_survtech varchar,
p_datesent timestamp,
p_datetested timestamp,
p_testtech varchar,
p_comments varchar,
p_processed smallint,
p_sampletype varchar,
p_samplecond varchar,
p_species varchar,
p_sex varchar,
p_avetemp double precision,
p_windspeed double precision,
p_winddir varchar,
p_raingauge double precision,
p_activity varchar,
p_testmethod varchar,
p_diseasetested varchar,
p_diseasepos varchar,
p_reviewed smallint,
p_reviewedby varchar,
p_revieweddate timestamp,
p_locationname varchar,
p_zone varchar,
p_recordstatus smallint,
p_zone2 varchar,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_lab varchar,
p_fieldtech varchar,
p_flockid uuid,
p_samplecount smallint,
p_chickenid uuid,
p_gatewaysync smallint,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.samplecollection lv
WHERE lv.objectid = p_objectid
AND lv.loc_id IS NOT DISTINCT FROM p_loc_id
AND lv.startdatetime IS NOT DISTINCT FROM p_startdatetime
AND lv.enddatetime IS NOT DISTINCT FROM p_enddatetime
AND lv.sitecond IS NOT DISTINCT FROM p_sitecond
AND lv.sampleid IS NOT DISTINCT FROM p_sampleid
AND lv.survtech IS NOT DISTINCT FROM p_survtech
AND lv.datesent IS NOT DISTINCT FROM p_datesent
AND lv.datetested IS NOT DISTINCT FROM p_datetested
AND lv.testtech IS NOT DISTINCT FROM p_testtech
AND lv.comments IS NOT DISTINCT FROM p_comments
AND lv.processed IS NOT DISTINCT FROM p_processed
AND lv.sampletype IS NOT DISTINCT FROM p_sampletype
AND lv.samplecond IS NOT DISTINCT FROM p_samplecond
AND lv.species IS NOT DISTINCT FROM p_species
AND lv.sex IS NOT DISTINCT FROM p_sex
AND lv.avetemp IS NOT DISTINCT FROM p_avetemp
AND lv.windspeed IS NOT DISTINCT FROM p_windspeed
AND lv.winddir IS NOT DISTINCT FROM p_winddir
AND lv.raingauge IS NOT DISTINCT FROM p_raingauge
AND lv.activity IS NOT DISTINCT FROM p_activity
AND lv.testmethod IS NOT DISTINCT FROM p_testmethod
AND lv.diseasetested IS NOT DISTINCT FROM p_diseasetested
AND lv.diseasepos IS NOT DISTINCT FROM p_diseasepos
AND lv.reviewed IS NOT DISTINCT FROM p_reviewed
AND lv.reviewedby IS NOT DISTINCT FROM p_reviewedby
AND lv.revieweddate IS NOT DISTINCT FROM p_revieweddate
AND lv.locationname IS NOT DISTINCT FROM p_locationname
AND lv.zone IS NOT DISTINCT FROM p_zone
AND lv.recordstatus IS NOT DISTINCT FROM p_recordstatus
AND lv.zone2 IS NOT DISTINCT FROM p_zone2
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.lab IS NOT DISTINCT FROM p_lab
AND lv.fieldtech IS NOT DISTINCT FROM p_fieldtech
AND lv.flockid IS NOT DISTINCT FROM p_flockid
AND lv.samplecount IS NOT DISTINCT FROM p_samplecount
AND lv.chickenid IS NOT DISTINCT FROM p_chickenid
AND lv.gatewaysync IS NOT DISTINCT FROM p_gatewaysync
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.samplecollection
WHERE objectid = p_objectid 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 fieldseeker.samplecollection
WHERE objectid = p_objectid;
-- Insert new version
INSERT INTO fieldseeker.samplecollection (
objectid,
loc_id,
startdatetime,
enddatetime,
sitecond,
sampleid,
survtech,
datesent,
datetested,
testtech,
comments,
processed,
sampletype,
samplecond,
species,
sex,
avetemp,
windspeed,
winddir,
raingauge,
activity,
testmethod,
diseasetested,
diseasepos,
reviewed,
reviewedby,
revieweddate,
locationname,
zone,
recordstatus,
zone2,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
lab,
fieldtech,
flockid,
samplecount,
chickenid,
gatewaysync,
creationdate,
creator,
editdate,
editor,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_loc_id,
p_startdatetime,
p_enddatetime,
p_sitecond,
p_sampleid,
p_survtech,
p_datesent,
p_datetested,
p_testtech,
p_comments,
p_processed,
p_sampletype,
p_samplecond,
p_species,
p_sex,
p_avetemp,
p_windspeed,
p_winddir,
p_raingauge,
p_activity,
p_testmethod,
p_diseasetested,
p_diseasepos,
p_reviewed,
p_reviewedby,
p_revieweddate,
p_locationname,
p_zone,
p_recordstatus,
p_zone2,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_lab,
p_fieldtech,
p_flockid,
p_samplecount,
p_chickenid,
p_gatewaysync,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_samplelocation(
p_objectid bigint,
p_name varchar,
p_zone varchar,
p_habitat varchar,
p_priority varchar,
p_usetype varchar,
p_active smallint,
p_description varchar,
p_accessdesc varchar,
p_comments varchar,
p_externalid varchar,
p_nextactiondatescheduled timestamp,
p_zone2 varchar,
p_locationnumber integer,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_gatewaysync smallint,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.samplelocation lv
WHERE lv.objectid = p_objectid
AND lv.name IS NOT DISTINCT FROM p_name
AND lv.zone IS NOT DISTINCT FROM p_zone
AND lv.habitat IS NOT DISTINCT FROM p_habitat
AND lv.priority IS NOT DISTINCT FROM p_priority
AND lv.usetype IS NOT DISTINCT FROM p_usetype
AND lv.active IS NOT DISTINCT FROM p_active
AND lv.description IS NOT DISTINCT FROM p_description
AND lv.accessdesc IS NOT DISTINCT FROM p_accessdesc
AND lv.comments IS NOT DISTINCT FROM p_comments
AND lv.externalid IS NOT DISTINCT FROM p_externalid
AND lv.nextactiondatescheduled IS NOT DISTINCT FROM p_nextactiondatescheduled
AND lv.zone2 IS NOT DISTINCT FROM p_zone2
AND lv.locationnumber IS NOT DISTINCT FROM p_locationnumber
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.gatewaysync IS NOT DISTINCT FROM p_gatewaysync
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.samplelocation
WHERE objectid = p_objectid 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 fieldseeker.samplelocation
WHERE objectid = p_objectid;
-- Insert new version
INSERT INTO fieldseeker.samplelocation (
objectid,
name,
zone,
habitat,
priority,
usetype,
active,
description,
accessdesc,
comments,
externalid,
nextactiondatescheduled,
zone2,
locationnumber,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
gatewaysync,
creationdate,
creator,
editdate,
editor,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_name,
p_zone,
p_habitat,
p_priority,
p_usetype,
p_active,
p_description,
p_accessdesc,
p_comments,
p_externalid,
p_nextactiondatescheduled,
p_zone2,
p_locationnumber,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_gatewaysync,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_servicerequest(
p_objectid bigint,
p_recdatetime timestamp,
p_source varchar,
p_entrytech varchar,
p_priority varchar,
p_supervisor varchar,
p_assignedtech varchar,
p_status varchar,
p_clranon smallint,
p_clrfname varchar,
p_clrphone1 varchar,
p_clrphone2 varchar,
p_clremail varchar,
p_clrcompany varchar,
p_clraddr1 varchar,
p_clraddr2 varchar,
p_clrcity varchar,
p_clrstate varchar,
p_clrzip varchar,
p_clrother varchar,
p_clrcontpref varchar,
p_reqcompany varchar,
p_reqaddr1 varchar,
p_reqaddr2 varchar,
p_reqcity varchar,
p_reqstate varchar,
p_reqzip varchar,
p_reqcrossst varchar,
p_reqsubdiv varchar,
p_reqmapgrid varchar,
p_reqpermission smallint,
p_reqtarget varchar,
p_reqdescr varchar,
p_reqnotesfortech varchar,
p_reqnotesforcust varchar,
p_reqfldnotes varchar,
p_reqprogramactions varchar,
p_datetimeclosed timestamp,
p_techclosed varchar,
p_sr_number integer,
p_reviewed smallint,
p_reviewedby varchar,
p_revieweddate timestamp,
p_accepted smallint,
p_accepteddate timestamp,
p_rejectedby varchar,
p_rejecteddate timestamp,
p_rejectedreason varchar,
p_duedate timestamp,
p_acceptedby varchar,
p_comments varchar,
p_estcompletedate timestamp,
p_nextaction varchar,
p_recordstatus smallint,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_firstresponsedate timestamp,
p_responsedaycount smallint,
p_allowed varchar,
p_xvalue varchar,
p_yvalue varchar,
p_validx varchar,
p_validy varchar,
p_externalid varchar,
p_externalerror varchar,
p_pointlocid uuid,
p_notified smallint,
p_notifieddate timestamp,
p_scheduled smallint,
p_scheduleddate timestamp,
p_dog integer,
p_schedule_period varchar,
p_schedule_notes varchar,
p_spanish integer,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_issuesreported varchar,
p_jurisdiction varchar,
p_notificationtimestamp varchar,
p_zone varchar,
p_zone2 varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.servicerequest lv
WHERE lv.objectid = p_objectid
AND lv.recdatetime IS NOT DISTINCT FROM p_recdatetime
AND lv.source IS NOT DISTINCT FROM p_source
AND lv.entrytech IS NOT DISTINCT FROM p_entrytech
AND lv.priority IS NOT DISTINCT FROM p_priority
AND lv.supervisor IS NOT DISTINCT FROM p_supervisor
AND lv.assignedtech IS NOT DISTINCT FROM p_assignedtech
AND lv.status IS NOT DISTINCT FROM p_status
AND lv.clranon IS NOT DISTINCT FROM p_clranon
AND lv.clrfname IS NOT DISTINCT FROM p_clrfname
AND lv.clrphone1 IS NOT DISTINCT FROM p_clrphone1
AND lv.clrphone2 IS NOT DISTINCT FROM p_clrphone2
AND lv.clremail IS NOT DISTINCT FROM p_clremail
AND lv.clrcompany IS NOT DISTINCT FROM p_clrcompany
AND lv.clraddr1 IS NOT DISTINCT FROM p_clraddr1
AND lv.clraddr2 IS NOT DISTINCT FROM p_clraddr2
AND lv.clrcity IS NOT DISTINCT FROM p_clrcity
AND lv.clrstate IS NOT DISTINCT FROM p_clrstate
AND lv.clrzip IS NOT DISTINCT FROM p_clrzip
AND lv.clrother IS NOT DISTINCT FROM p_clrother
AND lv.clrcontpref IS NOT DISTINCT FROM p_clrcontpref
AND lv.reqcompany IS NOT DISTINCT FROM p_reqcompany
AND lv.reqaddr1 IS NOT DISTINCT FROM p_reqaddr1
AND lv.reqaddr2 IS NOT DISTINCT FROM p_reqaddr2
AND lv.reqcity IS NOT DISTINCT FROM p_reqcity
AND lv.reqstate IS NOT DISTINCT FROM p_reqstate
AND lv.reqzip IS NOT DISTINCT FROM p_reqzip
AND lv.reqcrossst IS NOT DISTINCT FROM p_reqcrossst
AND lv.reqsubdiv IS NOT DISTINCT FROM p_reqsubdiv
AND lv.reqmapgrid IS NOT DISTINCT FROM p_reqmapgrid
AND lv.reqpermission IS NOT DISTINCT FROM p_reqpermission
AND lv.reqtarget IS NOT DISTINCT FROM p_reqtarget
AND lv.reqdescr IS NOT DISTINCT FROM p_reqdescr
AND lv.reqnotesfortech IS NOT DISTINCT FROM p_reqnotesfortech
AND lv.reqnotesforcust IS NOT DISTINCT FROM p_reqnotesforcust
AND lv.reqfldnotes IS NOT DISTINCT FROM p_reqfldnotes
AND lv.reqprogramactions IS NOT DISTINCT FROM p_reqprogramactions
AND lv.datetimeclosed IS NOT DISTINCT FROM p_datetimeclosed
AND lv.techclosed IS NOT DISTINCT FROM p_techclosed
AND lv.sr_number IS NOT DISTINCT FROM p_sr_number
AND lv.reviewed IS NOT DISTINCT FROM p_reviewed
AND lv.reviewedby IS NOT DISTINCT FROM p_reviewedby
AND lv.revieweddate IS NOT DISTINCT FROM p_revieweddate
AND lv.accepted IS NOT DISTINCT FROM p_accepted
AND lv.accepteddate IS NOT DISTINCT FROM p_accepteddate
AND lv.rejectedby IS NOT DISTINCT FROM p_rejectedby
AND lv.rejecteddate IS NOT DISTINCT FROM p_rejecteddate
AND lv.rejectedreason IS NOT DISTINCT FROM p_rejectedreason
AND lv.duedate IS NOT DISTINCT FROM p_duedate
AND lv.acceptedby IS NOT DISTINCT FROM p_acceptedby
AND lv.comments IS NOT DISTINCT FROM p_comments
AND lv.estcompletedate IS NOT DISTINCT FROM p_estcompletedate
AND lv.nextaction IS NOT DISTINCT FROM p_nextaction
AND lv.recordstatus IS NOT DISTINCT FROM p_recordstatus
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.firstresponsedate IS NOT DISTINCT FROM p_firstresponsedate
AND lv.responsedaycount IS NOT DISTINCT FROM p_responsedaycount
AND lv.allowed IS NOT DISTINCT FROM p_allowed
AND lv.xvalue IS NOT DISTINCT FROM p_xvalue
AND lv.yvalue IS NOT DISTINCT FROM p_yvalue
AND lv.validx IS NOT DISTINCT FROM p_validx
AND lv.validy IS NOT DISTINCT FROM p_validy
AND lv.externalid IS NOT DISTINCT FROM p_externalid
AND lv.externalerror IS NOT DISTINCT FROM p_externalerror
AND lv.pointlocid IS NOT DISTINCT FROM p_pointlocid
AND lv.notified IS NOT DISTINCT FROM p_notified
AND lv.notifieddate IS NOT DISTINCT FROM p_notifieddate
AND lv.scheduled IS NOT DISTINCT FROM p_scheduled
AND lv.scheduleddate IS NOT DISTINCT FROM p_scheduleddate
AND lv.dog IS NOT DISTINCT FROM p_dog
AND lv.schedule_period IS NOT DISTINCT FROM p_schedule_period
AND lv.schedule_notes IS NOT DISTINCT FROM p_schedule_notes
AND lv.spanish IS NOT DISTINCT FROM p_spanish
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.issuesreported IS NOT DISTINCT FROM p_issuesreported
AND lv.jurisdiction IS NOT DISTINCT FROM p_jurisdiction
AND lv.notificationtimestamp IS NOT DISTINCT FROM p_notificationtimestamp
AND lv.zone IS NOT DISTINCT FROM p_zone
AND lv.zone2 IS NOT DISTINCT FROM p_zone2
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.servicerequest
WHERE objectid = p_objectid 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 fieldseeker.servicerequest
WHERE objectid = p_objectid;
-- Insert new version
INSERT INTO fieldseeker.servicerequest (
objectid,
recdatetime,
source,
entrytech,
priority,
supervisor,
assignedtech,
status,
clranon,
clrfname,
clrphone1,
clrphone2,
clremail,
clrcompany,
clraddr1,
clraddr2,
clrcity,
clrstate,
clrzip,
clrother,
clrcontpref,
reqcompany,
reqaddr1,
reqaddr2,
reqcity,
reqstate,
reqzip,
reqcrossst,
reqsubdiv,
reqmapgrid,
reqpermission,
reqtarget,
reqdescr,
reqnotesfortech,
reqnotesforcust,
reqfldnotes,
reqprogramactions,
datetimeclosed,
techclosed,
sr_number,
reviewed,
reviewedby,
revieweddate,
accepted,
accepteddate,
rejectedby,
rejecteddate,
rejectedreason,
duedate,
acceptedby,
comments,
estcompletedate,
nextaction,
recordstatus,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
firstresponsedate,
responsedaycount,
allowed,
xvalue,
yvalue,
validx,
validy,
externalid,
externalerror,
pointlocid,
notified,
notifieddate,
scheduled,
scheduleddate,
dog,
schedule_period,
schedule_notes,
spanish,
creationdate,
creator,
editdate,
editor,
issuesreported,
jurisdiction,
notificationtimestamp,
zone,
zone2,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_recdatetime,
p_source,
p_entrytech,
p_priority,
p_supervisor,
p_assignedtech,
p_status,
p_clranon,
p_clrfname,
p_clrphone1,
p_clrphone2,
p_clremail,
p_clrcompany,
p_clraddr1,
p_clraddr2,
p_clrcity,
p_clrstate,
p_clrzip,
p_clrother,
p_clrcontpref,
p_reqcompany,
p_reqaddr1,
p_reqaddr2,
p_reqcity,
p_reqstate,
p_reqzip,
p_reqcrossst,
p_reqsubdiv,
p_reqmapgrid,
p_reqpermission,
p_reqtarget,
p_reqdescr,
p_reqnotesfortech,
p_reqnotesforcust,
p_reqfldnotes,
p_reqprogramactions,
p_datetimeclosed,
p_techclosed,
p_sr_number,
p_reviewed,
p_reviewedby,
p_revieweddate,
p_accepted,
p_accepteddate,
p_rejectedby,
p_rejecteddate,
p_rejectedreason,
p_duedate,
p_acceptedby,
p_comments,
p_estcompletedate,
p_nextaction,
p_recordstatus,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_firstresponsedate,
p_responsedaycount,
p_allowed,
p_xvalue,
p_yvalue,
p_validx,
p_validy,
p_externalid,
p_externalerror,
p_pointlocid,
p_notified,
p_notifieddate,
p_scheduled,
p_scheduleddate,
p_dog,
p_schedule_period,
p_schedule_notes,
p_spanish,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_issuesreported,
p_jurisdiction,
p_notificationtimestamp,
p_zone,
p_zone2,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_speciesabundance(
p_objectid bigint,
p_trapdata_id uuid,
p_species varchar,
p_males smallint,
p_unknown smallint,
p_bloodedfem smallint,
p_gravidfem smallint,
p_larvae smallint,
p_poolstogen smallint,
p_processed smallint,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_pupae smallint,
p_eggs smallint,
p_females integer,
p_total integer,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_yearweek integer,
p_globalzscore double precision,
p_r7score double precision,
p_r8score double precision,
p_h3r7 varchar,
p_h3r8 varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.speciesabundance lv
WHERE lv.objectid = p_objectid
AND lv.trapdata_id IS NOT DISTINCT FROM p_trapdata_id
AND lv.species IS NOT DISTINCT FROM p_species
AND lv.males IS NOT DISTINCT FROM p_males
AND lv.unknown IS NOT DISTINCT FROM p_unknown
AND lv.bloodedfem IS NOT DISTINCT FROM p_bloodedfem
AND lv.gravidfem IS NOT DISTINCT FROM p_gravidfem
AND lv.larvae IS NOT DISTINCT FROM p_larvae
AND lv.poolstogen IS NOT DISTINCT FROM p_poolstogen
AND lv.processed IS NOT DISTINCT FROM p_processed
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.pupae IS NOT DISTINCT FROM p_pupae
AND lv.eggs IS NOT DISTINCT FROM p_eggs
AND lv.females IS NOT DISTINCT FROM p_females
AND lv.total IS NOT DISTINCT FROM p_total
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.yearweek IS NOT DISTINCT FROM p_yearweek
AND lv.globalzscore IS NOT DISTINCT FROM p_globalzscore
AND lv.r7score IS NOT DISTINCT FROM p_r7score
AND lv.r8score IS NOT DISTINCT FROM p_r8score
AND lv.h3r7 IS NOT DISTINCT FROM p_h3r7
AND lv.h3r8 IS NOT DISTINCT FROM p_h3r8
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.speciesabundance
WHERE objectid = p_objectid 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 fieldseeker.speciesabundance
WHERE objectid = p_objectid;
-- Insert new version
INSERT INTO fieldseeker.speciesabundance (
objectid,
trapdata_id,
species,
males,
unknown,
bloodedfem,
gravidfem,
larvae,
poolstogen,
processed,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
pupae,
eggs,
females,
total,
creationdate,
creator,
editdate,
editor,
yearweek,
globalzscore,
r7score,
r8score,
h3r7,
h3r8,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_trapdata_id,
p_species,
p_males,
p_unknown,
p_bloodedfem,
p_gravidfem,
p_larvae,
p_poolstogen,
p_processed,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_pupae,
p_eggs,
p_females,
p_total,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_yearweek,
p_globalzscore,
p_r7score,
p_r8score,
p_h3r7,
p_h3r8,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_stormdrain(
p_objectid bigint,
p_nexttreatmentdate timestamp,
p_lasttreatdate timestamp,
p_lastaction varchar,
p_symbology varchar,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_laststatus varchar,
p_zone varchar,
p_zone2 varchar,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_type varchar,
p_jurisdiction varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.stormdrain lv
WHERE lv.objectid = p_objectid
AND lv.nexttreatmentdate IS NOT DISTINCT FROM p_nexttreatmentdate
AND lv.lasttreatdate IS NOT DISTINCT FROM p_lasttreatdate
AND lv.lastaction IS NOT DISTINCT FROM p_lastaction
AND lv.symbology IS NOT DISTINCT FROM p_symbology
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.laststatus IS NOT DISTINCT FROM p_laststatus
AND lv.zone IS NOT DISTINCT FROM p_zone
AND lv.zone2 IS NOT DISTINCT FROM p_zone2
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.type IS NOT DISTINCT FROM p_type
AND lv.jurisdiction IS NOT DISTINCT FROM p_jurisdiction
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.stormdrain
WHERE objectid = p_objectid 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 fieldseeker.stormdrain
WHERE objectid = p_objectid;
-- Insert new version
INSERT INTO fieldseeker.stormdrain (
objectid,
nexttreatmentdate,
lasttreatdate,
lastaction,
symbology,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
laststatus,
zone,
zone2,
creationdate,
creator,
editdate,
editor,
type,
jurisdiction,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_nexttreatmentdate,
p_lasttreatdate,
p_lastaction,
p_symbology,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_laststatus,
p_zone,
p_zone2,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_type,
p_jurisdiction,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_timecard(
p_objectid bigint,
p_activity varchar,
p_startdatetime timestamp,
p_enddatetime timestamp,
p_comments varchar,
p_externalid varchar,
p_equiptype varchar,
p_locationname varchar,
p_zone varchar,
p_zone2 varchar,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_linelocid uuid,
p_pointlocid uuid,
p_polygonlocid uuid,
p_lclocid uuid,
p_samplelocid uuid,
p_srid uuid,
p_traplocid uuid,
p_fieldtech varchar,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_rodentlocid uuid,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.timecard lv
WHERE lv.objectid = p_objectid
AND lv.activity IS NOT DISTINCT FROM p_activity
AND lv.startdatetime IS NOT DISTINCT FROM p_startdatetime
AND lv.enddatetime IS NOT DISTINCT FROM p_enddatetime
AND lv.comments IS NOT DISTINCT FROM p_comments
AND lv.externalid IS NOT DISTINCT FROM p_externalid
AND lv.equiptype IS NOT DISTINCT FROM p_equiptype
AND lv.locationname IS NOT DISTINCT FROM p_locationname
AND lv.zone IS NOT DISTINCT FROM p_zone
AND lv.zone2 IS NOT DISTINCT FROM p_zone2
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.linelocid IS NOT DISTINCT FROM p_linelocid
AND lv.pointlocid IS NOT DISTINCT FROM p_pointlocid
AND lv.polygonlocid IS NOT DISTINCT FROM p_polygonlocid
AND lv.lclocid IS NOT DISTINCT FROM p_lclocid
AND lv.samplelocid IS NOT DISTINCT FROM p_samplelocid
AND lv.srid IS NOT DISTINCT FROM p_srid
AND lv.traplocid IS NOT DISTINCT FROM p_traplocid
AND lv.fieldtech IS NOT DISTINCT FROM p_fieldtech
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.rodentlocid IS NOT DISTINCT FROM p_rodentlocid
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.timecard
WHERE objectid = p_objectid 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 fieldseeker.timecard
WHERE objectid = p_objectid;
-- Insert new version
INSERT INTO fieldseeker.timecard (
objectid,
activity,
startdatetime,
enddatetime,
comments,
externalid,
equiptype,
locationname,
zone,
zone2,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
linelocid,
pointlocid,
polygonlocid,
lclocid,
samplelocid,
srid,
traplocid,
fieldtech,
creationdate,
creator,
editdate,
editor,
rodentlocid,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_activity,
p_startdatetime,
p_enddatetime,
p_comments,
p_externalid,
p_equiptype,
p_locationname,
p_zone,
p_zone2,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_linelocid,
p_pointlocid,
p_polygonlocid,
p_lclocid,
p_samplelocid,
p_srid,
p_traplocid,
p_fieldtech,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_rodentlocid,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_trapdata(
p_objectid bigint,
p_traptype varchar,
p_trapactivitytype varchar,
p_startdatetime timestamp,
p_enddatetime timestamp,
p_comments varchar,
p_idbytech varchar,
p_sortbytech varchar,
p_processed smallint,
p_sitecond varchar,
p_locationname varchar,
p_recordstatus smallint,
p_reviewed smallint,
p_reviewedby varchar,
p_revieweddate timestamp,
p_trapcondition varchar,
p_trapnights smallint,
p_zone varchar,
p_zone2 varchar,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_srid uuid,
p_fieldtech varchar,
p_gatewaysync smallint,
p_loc_id uuid,
p_voltage double precision,
p_winddir varchar,
p_windspeed double precision,
p_avetemp double precision,
p_raingauge double precision,
p_lr smallint,
p_field integer,
p_vectorsurvtrapdataid varchar,
p_vectorsurvtraplocationid varchar,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_lure varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.trapdata lv
WHERE lv.objectid = p_objectid
AND lv.traptype IS NOT DISTINCT FROM p_traptype
AND lv.trapactivitytype IS NOT DISTINCT FROM p_trapactivitytype
AND lv.startdatetime IS NOT DISTINCT FROM p_startdatetime
AND lv.enddatetime IS NOT DISTINCT FROM p_enddatetime
AND lv.comments IS NOT DISTINCT FROM p_comments
AND lv.idbytech IS NOT DISTINCT FROM p_idbytech
AND lv.sortbytech IS NOT DISTINCT FROM p_sortbytech
AND lv.processed IS NOT DISTINCT FROM p_processed
AND lv.sitecond IS NOT DISTINCT FROM p_sitecond
AND lv.locationname IS NOT DISTINCT FROM p_locationname
AND lv.recordstatus IS NOT DISTINCT FROM p_recordstatus
AND lv.reviewed IS NOT DISTINCT FROM p_reviewed
AND lv.reviewedby IS NOT DISTINCT FROM p_reviewedby
AND lv.revieweddate IS NOT DISTINCT FROM p_revieweddate
AND lv.trapcondition IS NOT DISTINCT FROM p_trapcondition
AND lv.trapnights IS NOT DISTINCT FROM p_trapnights
AND lv.zone IS NOT DISTINCT FROM p_zone
AND lv.zone2 IS NOT DISTINCT FROM p_zone2
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.srid IS NOT DISTINCT FROM p_srid
AND lv.fieldtech IS NOT DISTINCT FROM p_fieldtech
AND lv.gatewaysync IS NOT DISTINCT FROM p_gatewaysync
AND lv.loc_id IS NOT DISTINCT FROM p_loc_id
AND lv.voltage IS NOT DISTINCT FROM p_voltage
AND lv.winddir IS NOT DISTINCT FROM p_winddir
AND lv.windspeed IS NOT DISTINCT FROM p_windspeed
AND lv.avetemp IS NOT DISTINCT FROM p_avetemp
AND lv.raingauge IS NOT DISTINCT FROM p_raingauge
AND lv.lr IS NOT DISTINCT FROM p_lr
AND lv.field IS NOT DISTINCT FROM p_field
AND lv.vectorsurvtrapdataid IS NOT DISTINCT FROM p_vectorsurvtrapdataid
AND lv.vectorsurvtraplocationid IS NOT DISTINCT FROM p_vectorsurvtraplocationid
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.lure IS NOT DISTINCT FROM p_lure
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.trapdata
WHERE objectid = p_objectid 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 fieldseeker.trapdata
WHERE objectid = p_objectid;
-- Insert new version
INSERT INTO fieldseeker.trapdata (
objectid,
traptype,
trapactivitytype,
startdatetime,
enddatetime,
comments,
idbytech,
sortbytech,
processed,
sitecond,
locationname,
recordstatus,
reviewed,
reviewedby,
revieweddate,
trapcondition,
trapnights,
zone,
zone2,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
srid,
fieldtech,
gatewaysync,
loc_id,
voltage,
winddir,
windspeed,
avetemp,
raingauge,
lr,
field,
vectorsurvtrapdataid,
vectorsurvtraplocationid,
creationdate,
creator,
editdate,
editor,
lure,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_traptype,
p_trapactivitytype,
p_startdatetime,
p_enddatetime,
p_comments,
p_idbytech,
p_sortbytech,
p_processed,
p_sitecond,
p_locationname,
p_recordstatus,
p_reviewed,
p_reviewedby,
p_revieweddate,
p_trapcondition,
p_trapnights,
p_zone,
p_zone2,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_srid,
p_fieldtech,
p_gatewaysync,
p_loc_id,
p_voltage,
p_winddir,
p_windspeed,
p_avetemp,
p_raingauge,
p_lr,
p_field,
p_vectorsurvtrapdataid,
p_vectorsurvtraplocationid,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_lure,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_traplocation(
p_objectid bigint,
p_name varchar,
p_zone varchar,
p_habitat varchar,
p_priority varchar,
p_usetype varchar,
p_active smallint,
p_description varchar,
p_accessdesc varchar,
p_comments varchar,
p_externalid varchar,
p_nextactiondatescheduled timestamp,
p_zone2 varchar,
p_locationnumber integer,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_gatewaysync smallint,
p_route integer,
p_set_dow integer,
p_route_order integer,
p_vectorsurvsiteid varchar,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_h3r7 varchar,
p_h3r8 varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.traplocation lv
WHERE lv.objectid = p_objectid
AND lv.name IS NOT DISTINCT FROM p_name
AND lv.zone IS NOT DISTINCT FROM p_zone
AND lv.habitat IS NOT DISTINCT FROM p_habitat
AND lv.priority IS NOT DISTINCT FROM p_priority
AND lv.usetype IS NOT DISTINCT FROM p_usetype
AND lv.active IS NOT DISTINCT FROM p_active
AND lv.description IS NOT DISTINCT FROM p_description
AND lv.accessdesc IS NOT DISTINCT FROM p_accessdesc
AND lv.comments IS NOT DISTINCT FROM p_comments
AND lv.externalid IS NOT DISTINCT FROM p_externalid
AND lv.nextactiondatescheduled IS NOT DISTINCT FROM p_nextactiondatescheduled
AND lv.zone2 IS NOT DISTINCT FROM p_zone2
AND lv.locationnumber IS NOT DISTINCT FROM p_locationnumber
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.gatewaysync IS NOT DISTINCT FROM p_gatewaysync
AND lv.route IS NOT DISTINCT FROM p_route
AND lv.set_dow IS NOT DISTINCT FROM p_set_dow
AND lv.route_order IS NOT DISTINCT FROM p_route_order
AND lv.vectorsurvsiteid IS NOT DISTINCT FROM p_vectorsurvsiteid
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.h3r7 IS NOT DISTINCT FROM p_h3r7
AND lv.h3r8 IS NOT DISTINCT FROM p_h3r8
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.traplocation
WHERE objectid = p_objectid 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 fieldseeker.traplocation
WHERE objectid = p_objectid;
-- Insert new version
INSERT INTO fieldseeker.traplocation (
objectid,
name,
zone,
habitat,
priority,
usetype,
active,
description,
accessdesc,
comments,
externalid,
nextactiondatescheduled,
zone2,
locationnumber,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
gatewaysync,
route,
set_dow,
route_order,
vectorsurvsiteid,
creationdate,
creator,
editdate,
editor,
h3r7,
h3r8,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_name,
p_zone,
p_habitat,
p_priority,
p_usetype,
p_active,
p_description,
p_accessdesc,
p_comments,
p_externalid,
p_nextactiondatescheduled,
p_zone2,
p_locationnumber,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_gatewaysync,
p_route,
p_set_dow,
p_route_order,
p_vectorsurvsiteid,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_h3r7,
p_h3r8,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_treatmentarea(
p_objectid bigint,
p_treat_id uuid,
p_session_id uuid,
p_treatdate timestamp,
p_comments varchar,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_notified smallint,
p_type varchar,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_shape__area double precision,
p_shape__length double precision,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.treatmentarea lv
WHERE lv.objectid = p_objectid
AND lv.treat_id IS NOT DISTINCT FROM p_treat_id
AND lv.session_id IS NOT DISTINCT FROM p_session_id
AND lv.treatdate IS NOT DISTINCT FROM p_treatdate
AND lv.comments IS NOT DISTINCT FROM p_comments
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.notified IS NOT DISTINCT FROM p_notified
AND lv.type IS NOT DISTINCT FROM p_type
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.shape__area IS NOT DISTINCT FROM p_shape__area
AND lv.shape__length IS NOT DISTINCT FROM p_shape__length
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.treatmentarea
WHERE objectid = p_objectid 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 fieldseeker.treatmentarea
WHERE objectid = p_objectid;
-- Insert new version
INSERT INTO fieldseeker.treatmentarea (
objectid,
treat_id,
session_id,
treatdate,
comments,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
notified,
type,
creationdate,
creator,
editdate,
editor,
shape__area,
shape__length,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_treat_id,
p_session_id,
p_treatdate,
p_comments,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_notified,
p_type,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_shape__area,
p_shape__length,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_treatment(
p_objectid bigint,
p_activity varchar,
p_treatarea double precision,
p_areaunit varchar,
p_product varchar,
p_qty double precision,
p_qtyunit varchar,
p_method varchar,
p_equiptype varchar,
p_comments varchar,
p_avetemp double precision,
p_windspeed double precision,
p_winddir varchar,
p_raingauge double precision,
p_startdatetime timestamp,
p_enddatetime timestamp,
p_insp_id uuid,
p_reviewed smallint,
p_reviewedby varchar,
p_revieweddate timestamp,
p_locationname varchar,
p_zone varchar,
p_warningoverride smallint,
p_recordstatus smallint,
p_zone2 varchar,
p_treatacres double precision,
p_tirecount smallint,
p_cbcount smallint,
p_containercount smallint,
p_globalid uuid,
p_treatmentlength double precision,
p_treatmenthours double precision,
p_treatmentlengthunits varchar,
p_linelocid uuid,
p_pointlocid uuid,
p_polygonlocid uuid,
p_srid uuid,
p_sdid uuid,
p_barrierrouteid uuid,
p_ulvrouteid uuid,
p_fieldtech varchar,
p_ptaid uuid,
p_flowrate double precision,
p_habitat varchar,
p_treathectares double precision,
p_invloc varchar,
p_temp_sitecond varchar,
p_sitecond varchar,
p_totalcostprodcut double precision,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_targetspecies varchar,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.treatment lv
WHERE lv.objectid = p_objectid
AND lv.activity IS NOT DISTINCT FROM p_activity
AND lv.treatarea IS NOT DISTINCT FROM p_treatarea
AND lv.areaunit IS NOT DISTINCT FROM p_areaunit
AND lv.product IS NOT DISTINCT FROM p_product
AND lv.qty IS NOT DISTINCT FROM p_qty
AND lv.qtyunit IS NOT DISTINCT FROM p_qtyunit
AND lv.method IS NOT DISTINCT FROM p_method
AND lv.equiptype IS NOT DISTINCT FROM p_equiptype
AND lv.comments IS NOT DISTINCT FROM p_comments
AND lv.avetemp IS NOT DISTINCT FROM p_avetemp
AND lv.windspeed IS NOT DISTINCT FROM p_windspeed
AND lv.winddir IS NOT DISTINCT FROM p_winddir
AND lv.raingauge IS NOT DISTINCT FROM p_raingauge
AND lv.startdatetime IS NOT DISTINCT FROM p_startdatetime
AND lv.enddatetime IS NOT DISTINCT FROM p_enddatetime
AND lv.insp_id IS NOT DISTINCT FROM p_insp_id
AND lv.reviewed IS NOT DISTINCT FROM p_reviewed
AND lv.reviewedby IS NOT DISTINCT FROM p_reviewedby
AND lv.revieweddate IS NOT DISTINCT FROM p_revieweddate
AND lv.locationname IS NOT DISTINCT FROM p_locationname
AND lv.zone IS NOT DISTINCT FROM p_zone
AND lv.warningoverride IS NOT DISTINCT FROM p_warningoverride
AND lv.recordstatus IS NOT DISTINCT FROM p_recordstatus
AND lv.zone2 IS NOT DISTINCT FROM p_zone2
AND lv.treatacres IS NOT DISTINCT FROM p_treatacres
AND lv.tirecount IS NOT DISTINCT FROM p_tirecount
AND lv.cbcount IS NOT DISTINCT FROM p_cbcount
AND lv.containercount IS NOT DISTINCT FROM p_containercount
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.treatmentlength IS NOT DISTINCT FROM p_treatmentlength
AND lv.treatmenthours IS NOT DISTINCT FROM p_treatmenthours
AND lv.treatmentlengthunits IS NOT DISTINCT FROM p_treatmentlengthunits
AND lv.linelocid IS NOT DISTINCT FROM p_linelocid
AND lv.pointlocid IS NOT DISTINCT FROM p_pointlocid
AND lv.polygonlocid IS NOT DISTINCT FROM p_polygonlocid
AND lv.srid IS NOT DISTINCT FROM p_srid
AND lv.sdid IS NOT DISTINCT FROM p_sdid
AND lv.barrierrouteid IS NOT DISTINCT FROM p_barrierrouteid
AND lv.ulvrouteid IS NOT DISTINCT FROM p_ulvrouteid
AND lv.fieldtech IS NOT DISTINCT FROM p_fieldtech
AND lv.ptaid IS NOT DISTINCT FROM p_ptaid
AND lv.flowrate IS NOT DISTINCT FROM p_flowrate
AND lv.habitat IS NOT DISTINCT FROM p_habitat
AND lv.treathectares IS NOT DISTINCT FROM p_treathectares
AND lv.invloc IS NOT DISTINCT FROM p_invloc
AND lv.temp_sitecond IS NOT DISTINCT FROM p_temp_sitecond
AND lv.sitecond IS NOT DISTINCT FROM p_sitecond
AND lv.totalcostprodcut IS NOT DISTINCT FROM p_totalcostprodcut
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.targetspecies IS NOT DISTINCT FROM p_targetspecies
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.treatment
WHERE objectid = p_objectid 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 fieldseeker.treatment
WHERE objectid = p_objectid;
-- Insert new version
INSERT INTO fieldseeker.treatment (
objectid,
activity,
treatarea,
areaunit,
product,
qty,
qtyunit,
method,
equiptype,
comments,
avetemp,
windspeed,
winddir,
raingauge,
startdatetime,
enddatetime,
insp_id,
reviewed,
reviewedby,
revieweddate,
locationname,
zone,
warningoverride,
recordstatus,
zone2,
treatacres,
tirecount,
cbcount,
containercount,
globalid,
treatmentlength,
treatmenthours,
treatmentlengthunits,
linelocid,
pointlocid,
polygonlocid,
srid,
sdid,
barrierrouteid,
ulvrouteid,
fieldtech,
ptaid,
flowrate,
habitat,
treathectares,
invloc,
temp_sitecond,
sitecond,
totalcostprodcut,
creationdate,
creator,
editdate,
editor,
targetspecies,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_activity,
p_treatarea,
p_areaunit,
p_product,
p_qty,
p_qtyunit,
p_method,
p_equiptype,
p_comments,
p_avetemp,
p_windspeed,
p_winddir,
p_raingauge,
p_startdatetime,
p_enddatetime,
p_insp_id,
p_reviewed,
p_reviewedby,
p_revieweddate,
p_locationname,
p_zone,
p_warningoverride,
p_recordstatus,
p_zone2,
p_treatacres,
p_tirecount,
p_cbcount,
p_containercount,
p_globalid,
p_treatmentlength,
p_treatmenthours,
p_treatmentlengthunits,
p_linelocid,
p_pointlocid,
p_polygonlocid,
p_srid,
p_sdid,
p_barrierrouteid,
p_ulvrouteid,
p_fieldtech,
p_ptaid,
p_flowrate,
p_habitat,
p_treathectares,
p_invloc,
p_temp_sitecond,
p_sitecond,
p_totalcostprodcut,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_targetspecies,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_zones2(
p_objectid bigint,
p_name varchar,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_shape__area double precision,
p_shape__length double precision,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.zones2 lv
WHERE lv.objectid = p_objectid
AND lv.name IS NOT DISTINCT FROM p_name
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.shape__area IS NOT DISTINCT FROM p_shape__area
AND lv.shape__length IS NOT DISTINCT FROM p_shape__length
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.zones2
WHERE objectid = p_objectid 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 fieldseeker.zones2
WHERE objectid = p_objectid;
-- Insert new version
INSERT INTO fieldseeker.zones2 (
objectid,
name,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
creationdate,
creator,
editdate,
editor,
shape__area,
shape__length,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_name,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_shape__area,
p_shape__length,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
-- +goose StatementBegin
CREATE OR REPLACE FUNCTION fieldseeker.insert_zones(
p_objectid bigint,
p_name varchar,
p_globalid uuid,
p_created_user varchar,
p_created_date timestamp,
p_last_edited_user varchar,
p_last_edited_date timestamp,
p_active integer,
p_creationdate timestamp,
p_creator varchar,
p_editdate timestamp,
p_editor varchar,
p_shape__area double precision,
p_shape__length double precision,
p_geometry jsonb,
p_geospatial geometry
) 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 fieldseeker.zones lv
WHERE lv.objectid = p_objectid
AND lv.name IS NOT DISTINCT FROM p_name
AND lv.globalid IS NOT DISTINCT FROM p_globalid
AND lv.created_user IS NOT DISTINCT FROM p_created_user
AND lv.created_date IS NOT DISTINCT FROM p_created_date
AND lv.last_edited_user IS NOT DISTINCT FROM p_last_edited_user
AND lv.last_edited_date IS NOT DISTINCT FROM p_last_edited_date
AND lv.active IS NOT DISTINCT FROM p_active
AND lv.creationdate IS NOT DISTINCT FROM p_creationdate
AND lv.creator IS NOT DISTINCT FROM p_creator
AND lv.editdate IS NOT DISTINCT FROM p_editdate
AND lv.editor IS NOT DISTINCT FROM p_editor
AND lv.shape__area IS NOT DISTINCT FROM p_shape__area
AND lv.shape__length IS NOT DISTINCT FROM p_shape__length
AND lv.geometry IS NOT DISTINCT FROM p_geometry
AND lv.geospatial IS NOT DISTINCT FROM p_geospatial
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 fieldseeker.zones
WHERE objectid = p_objectid 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 fieldseeker.zones
WHERE objectid = p_objectid;
-- Insert new version
INSERT INTO fieldseeker.zones (
objectid,
name,
globalid,
created_user,
created_date,
last_edited_user,
last_edited_date,
active,
creationdate,
creator,
editdate,
editor,
shape__area,
shape__length,
geometry,
geospatial,
VERSION
) VALUES (
p_objectid,
p_name,
p_globalid,
p_created_user,
p_created_date,
p_last_edited_user,
p_last_edited_date,
p_active,
p_creationdate,
p_creator,
p_editdate,
p_editor,
p_shape__area,
p_shape__length,
p_geometry,
p_geospatial,
v_next_version
);
-- Return success with new version
RETURN QUERY SELECT TRUE AS row_inserted, v_next_version AS version_num;
END;
$$ LANGUAGE plpgsql;
-- +goose StatementEnd
ALTER TABLE fieldseeker.containerrelate DROP COLUMN organization_id;
ALTER TABLE fieldseeker.fieldscoutinglog DROP COLUMN organization_id;
ALTER TABLE fieldseeker.habitatrelate DROP COLUMN organization_id;
ALTER TABLE fieldseeker.inspectionsample DROP COLUMN organization_id;
ALTER TABLE fieldseeker.inspectionsampledetail DROP COLUMN organization_id;
ALTER TABLE fieldseeker.linelocation DROP COLUMN organization_id;
ALTER TABLE fieldseeker.locationtracking DROP COLUMN organization_id;
ALTER TABLE fieldseeker.mosquitoinspection DROP COLUMN organization_id;
ALTER TABLE fieldseeker.pointlocation DROP COLUMN organization_id;
ALTER TABLE fieldseeker.polygonlocation DROP COLUMN organization_id;
ALTER TABLE fieldseeker.pool DROP COLUMN organization_id;
ALTER TABLE fieldseeker.pooldetail DROP COLUMN organization_id;
ALTER TABLE fieldseeker.proposedtreatmentarea DROP COLUMN organization_id;
ALTER TABLE fieldseeker.qamosquitoinspection DROP COLUMN organization_id;
ALTER TABLE fieldseeker.rodentlocation DROP COLUMN organization_id;
ALTER TABLE fieldseeker.samplecollection DROP COLUMN organization_id;
ALTER TABLE fieldseeker.samplelocation DROP COLUMN organization_id;
ALTER TABLE fieldseeker.servicerequest DROP COLUMN organization_id;
ALTER TABLE fieldseeker.speciesabundance DROP COLUMN organization_id;
ALTER TABLE fieldseeker.stormdrain DROP COLUMN organization_id;
ALTER TABLE fieldseeker.timecard DROP COLUMN organization_id;
ALTER TABLE fieldseeker.trapdata DROP COLUMN organization_id;
ALTER TABLE fieldseeker.traplocation DROP COLUMN organization_id;
ALTER TABLE fieldseeker.treatment DROP COLUMN organization_id;
ALTER TABLE fieldseeker.treatmentarea DROP COLUMN organization_id;
ALTER TABLE fieldseeker.zones DROP COLUMN organization_id;
ALTER TABLE fieldseeker.zones2 DROP COLUMN organization_id;