From b35d697ad900f83eec560280ba3697a17ba15a00 Mon Sep 17 00:00:00 2001 From: Mosen Date: Tue, 28 Jun 2016 20:08:49 +1000 Subject: [PATCH] Add a few more statements to the up and down migrations for the new unique constraints so that the data will fit the constraints if up or downgraded. Use sql.NullString for UDID and SerialNumber. --- device/device.go | 17 +++++++++-------- .../201606280001_devices_idx_uuid_sn_down.sql | 6 ++++++ .../201606280001_devices_idx_uuid_sn_up.sql | 6 ++++++ 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/device/device.go b/device/device.go index 747a1360..d1acdcd3 100644 --- a/device/device.go +++ b/device/device.go @@ -7,19 +7,20 @@ import ( "github.com/micromdm/dep" //"github.com/micromdm/mdm" + "database/sql" ) // Device represents an iOS or OS X Computer type Device struct { // Primary key is UUID - UUID string `json:"uuid" db:"device_uuid"` - UDID string `json:"udid,omitempty"` - SerialNumber string `json:"serial_number,omitempty" db:"serial_number,omitempty"` - OSVersion string `json:"os_version,omitempty" db:"os_version,omitempty"` - BuildVersion string `json:"build_version,omitempty" db:"build_version,omitempty"` - ProductName string `json:"product_name,omitempty" db:"product_name,omitempty"` - IMEI string `json:"imei,omitempty" db:"imei,omitempty"` - MEID string `json:"meid,omitempty" db:"meid,omitempty"` + UUID string `json:"uuid" db:"device_uuid"` + UDID sql.NullString `json:"udid,omitempty"` + SerialNumber sql.NullString `json:"serial_number,omitempty" db:"serial_number,omitempty"` + OSVersion string `json:"os_version,omitempty" db:"os_version,omitempty"` + BuildVersion string `json:"build_version,omitempty" db:"build_version,omitempty"` + ProductName string `json:"product_name,omitempty" db:"product_name,omitempty"` + IMEI string `json:"imei,omitempty" db:"imei,omitempty"` + MEID string `json:"meid,omitempty" db:"meid,omitempty"` //Apple MDM Protocol Topic MDMTopic string `json:"mdm_topic,omitempty" db:"apple_mdm_topic,omitempty"` PushMagic string `json:"push_magic,omitempty" db:"apple_push_magic,omitempty"` diff --git a/migrations/201606280001_devices_idx_uuid_sn_down.sql b/migrations/201606280001_devices_idx_uuid_sn_down.sql index 2ca9de23..69864ca1 100644 --- a/migrations/201606280001_devices_idx_uuid_sn_down.sql +++ b/migrations/201606280001_devices_idx_uuid_sn_down.sql @@ -1,4 +1,10 @@ DROP INDEX IF EXISTS serial_idx; DROP INDEX IF EXISTS udid_idx; +UPDATE devices SET udid = '' WHERE udid IS NULL; +UPDATE devices SET serial_number = '' WHERE serial_number IS NULL; + +ALTER TABLE devices + ALTER COLUMN udid SET NOT NULL; + CREATE UNIQUE INDEX IF NOT EXISTS udid_serial_idx ON devices (udid, serial_number); \ No newline at end of file diff --git a/migrations/201606280001_devices_idx_uuid_sn_up.sql b/migrations/201606280001_devices_idx_uuid_sn_up.sql index 84f58f9c..93c77a68 100644 --- a/migrations/201606280001_devices_idx_uuid_sn_up.sql +++ b/migrations/201606280001_devices_idx_uuid_sn_up.sql @@ -1,5 +1,11 @@ -- Add the UUID and Serial Number back as individual UNIQUE constraints, along with others DROP INDEX udid_serial_idx; +ALTER TABLE devices + ALTER COLUMN udid DROP NOT NULL; + +UPDATE devices SET udid = NULL WHERE udid = ''; +UPDATE devices SET serial_number = NULL WHERE serial_number = ''; + CREATE UNIQUE INDEX IF NOT EXISTS serial_idx ON devices (serial_number); CREATE UNIQUE INDEX IF NOT EXISTS udid_idx ON devices (udid);