nidus-sync/db/fieldseeker-schema/insert/insert_linelocation_versioned.sql

133 lines
6.8 KiB
MySQL
Raw Normal View History

-- Prepared statement for conditional insert with versioning for fieldseeker.linelocation
-- Only inserts a new version if data has changed
PREPARE insert_linelocation_versioned(bigint, varchar, varchar, fieldseeker.linelocation_linelocation_habitat_fc51bdc4f1954df58206d69ce14182f3_enum, fieldseeker.linelocation_locationpriority_enum, fieldseeker.linelocation_linelocation_usetype_2aeca2e60d2f455c86fc34895dc80a02_enum, fieldseeker.linelocation_notinuit_f_enum, varchar, varchar, varchar, fieldseeker.linelocation_locationsymbology_enum, varchar, double precision, timestamp, smallint, double precision, double precision, varchar, integer, uuid, varchar, timestamp, varchar, timestamp, timestamp, varchar, double precision, double precision, varchar, varchar, varchar, timestamp, varchar, double precision, varchar, double precision, varchar, varchar, double precision, double precision, varchar, fieldseeker.linelocation_linelocation_waterorigin_84723d92_306a_46f4_8ef1_69b55a916008_enum, timestamp, varchar, timestamp, varchar, varchar, double precision) AS
WITH
-- Get the current latest version of this record
latest_version AS (
SELECT * FROM fieldseeker.linelocation
WHERE objectid = $1
ORDER BY VERSION DESC
LIMIT 1
),
-- Calculate the next version number
next_version AS (
SELECT COALESCE(MAX(VERSION) + 1, 1) as version_num
FROM fieldseeker.linelocation
WHERE objectid = $1
)
-- Perform conditional insert
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,
VERSION
)
SELECT
$1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, $24, $25, $26, $27, $28, $29, $30, $31, $32, $33, $34, $35, $36, $37, $38, $39, $40, $41, $42, $43, $44, $45, $46, $47, $48,
v.version_num
FROM next_version v
WHERE
-- Only insert if no record exists yet OR data has changed
NOT EXISTS (SELECT 1 FROM latest_version lv WHERE
lv.objectid IS NOT DISTINCT FROM $1 AND
lv.name IS NOT DISTINCT FROM $2 AND
lv.zone IS NOT DISTINCT FROM $3 AND
lv.habitat IS NOT DISTINCT FROM $4 AND
lv.priority IS NOT DISTINCT FROM $5 AND
lv.usetype IS NOT DISTINCT FROM $6 AND
lv.active IS NOT DISTINCT FROM $7 AND
lv.description IS NOT DISTINCT FROM $8 AND
lv.accessdesc IS NOT DISTINCT FROM $9 AND
lv.comments IS NOT DISTINCT FROM $10 AND
lv.symbology IS NOT DISTINCT FROM $11 AND
lv.externalid IS NOT DISTINCT FROM $12 AND
lv.acres IS NOT DISTINCT FROM $13 AND
lv.nextactiondatescheduled IS NOT DISTINCT FROM $14 AND
lv.larvinspectinterval IS NOT DISTINCT FROM $15 AND
lv.length_ft IS NOT DISTINCT FROM $16 AND
lv.width_ft IS NOT DISTINCT FROM $17 AND
lv.zone2 IS NOT DISTINCT FROM $18 AND
lv.locationnumber IS NOT DISTINCT FROM $19 AND
lv.globalid IS NOT DISTINCT FROM $20 AND
lv.created_user IS NOT DISTINCT FROM $21 AND
lv.created_date IS NOT DISTINCT FROM $22 AND
lv.last_edited_user IS NOT DISTINCT FROM $23 AND
lv.last_edited_date IS NOT DISTINCT FROM $24 AND
lv.lastinspectdate IS NOT DISTINCT FROM $25 AND
lv.lastinspectbreeding IS NOT DISTINCT FROM $26 AND
lv.lastinspectavglarvae IS NOT DISTINCT FROM $27 AND
lv.lastinspectavgpupae IS NOT DISTINCT FROM $28 AND
lv.lastinspectlstages IS NOT DISTINCT FROM $29 AND
lv.lastinspectactiontaken IS NOT DISTINCT FROM $30 AND
lv.lastinspectfieldspecies IS NOT DISTINCT FROM $31 AND
lv.lasttreatdate IS NOT DISTINCT FROM $32 AND
lv.lasttreatproduct IS NOT DISTINCT FROM $33 AND
lv.lasttreatqty IS NOT DISTINCT FROM $34 AND
lv.lasttreatqtyunit IS NOT DISTINCT FROM $35 AND
lv.hectares IS NOT DISTINCT FROM $36 AND
lv.lastinspectactivity IS NOT DISTINCT FROM $37 AND
lv.lasttreatactivity IS NOT DISTINCT FROM $38 AND
lv.length_meters IS NOT DISTINCT FROM $39 AND
lv.width_meters IS NOT DISTINCT FROM $40 AND
lv.lastinspectconditions IS NOT DISTINCT FROM $41 AND
lv.waterorigin IS NOT DISTINCT FROM $42 AND
lv.creationdate IS NOT DISTINCT FROM $43 AND
lv.creator IS NOT DISTINCT FROM $44 AND
lv.editdate IS NOT DISTINCT FROM $45 AND
lv.editor IS NOT DISTINCT FROM $46 AND
lv.jurisdiction IS NOT DISTINCT FROM $47 AND
lv.shape__length IS NOT DISTINCT FROM $48
)
RETURNING *;
-- Example usage: EXECUTE insert_linelocation_versioned(id, value1, value2, ...);
-- Parameters in order:
-- $1: OBJECTID (bigint)
-- $2: NAME (varchar)
-- $3: ZONE (varchar)
-- $4: HABITAT (fieldseeker.linelocation_linelocation_habitat_fc51bdc4f1954df58206d69ce14182f3_enum)
-- $5: PRIORITY (fieldseeker.linelocation_locationpriority_enum)
-- $6: USETYPE (fieldseeker.linelocation_linelocation_usetype_2aeca2e60d2f455c86fc34895dc80a02_enum)
-- $7: ACTIVE (fieldseeker.linelocation_notinuit_f_enum)
-- $8: DESCRIPTION (varchar)
-- $9: ACCESSDESC (varchar)
-- $10: COMMENTS (varchar)
-- $11: SYMBOLOGY (fieldseeker.linelocation_locationsymbology_enum)
-- $12: EXTERNALID (varchar)
-- $13: ACRES (double precision)
-- $14: NEXTACTIONDATESCHEDULED (timestamp)
-- $15: LARVINSPECTINTERVAL (smallint)
-- $16: LENGTH_FT (double precision)
-- $17: WIDTH_FT (double precision)
-- $18: ZONE2 (varchar)
-- $19: LOCATIONNUMBER (integer)
-- $20: GlobalID (uuid)
-- $21: created_user (varchar)
-- $22: created_date (timestamp)
-- $23: last_edited_user (varchar)
-- $24: last_edited_date (timestamp)
-- $25: LASTINSPECTDATE (timestamp)
-- $26: LASTINSPECTBREEDING (varchar)
-- $27: LASTINSPECTAVGLARVAE (double precision)
-- $28: LASTINSPECTAVGPUPAE (double precision)
-- $29: LASTINSPECTLSTAGES (varchar)
-- $30: LASTINSPECTACTIONTAKEN (varchar)
-- $31: LASTINSPECTFIELDSPECIES (varchar)
-- $32: LASTTREATDATE (timestamp)
-- $33: LASTTREATPRODUCT (varchar)
-- $34: LASTTREATQTY (double precision)
-- $35: LASTTREATQTYUNIT (varchar)
-- $36: HECTARES (double precision)
-- $37: LASTINSPECTACTIVITY (varchar)
-- $38: LASTTREATACTIVITY (varchar)
-- $39: LENGTH_METERS (double precision)
-- $40: WIDTH_METERS (double precision)
-- $41: LASTINSPECTCONDITIONS (varchar)
-- $42: WATERORIGIN (fieldseeker.linelocation_linelocation_waterorigin_84723d92_306a_46f4_8ef1_69b55a916008_enum)
-- $43: CreationDate (timestamp)
-- $44: Creator (varchar)
-- $45: EditDate (timestamp)
-- $46: Editor (varchar)
-- $47: JURISDICTION (varchar)
-- $48: Shape__Length (double precision)