34 lines
1.1 KiB
PL/PgSQL
34 lines
1.1 KiB
PL/PgSQL
-- Create devices table
|
|
CREATE TABLE IF NOT EXISTS devices (
|
|
id uuid PRIMARY KEY default gen_random_uuid(),
|
|
created_at timestamp NOT NULL default now(),
|
|
created_by uuid NOT NULL,
|
|
updated_at timestamp NOT NULL default now(),
|
|
updated_by uuid NOT NULL,
|
|
fingerprint_hash VARCHAR(64) UNIQUE NOT NULL,
|
|
device_name VARCHAR(255),
|
|
first_seen TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
last_seen TIMESTAMP NOT NULL DEFAULT NOW(),
|
|
user_agent TEXT
|
|
);
|
|
|
|
-- Create indexes for better performance
|
|
CREATE INDEX IF NOT EXISTS idx_devices_fingerprint_hash ON devices(fingerprint_hash);
|
|
CREATE INDEX IF NOT EXISTS idx_devices_last_seen ON devices(last_seen);
|
|
|
|
-- Create function to automatically update updated_at timestamp
|
|
CREATE OR REPLACE FUNCTION update_updated_at_column()
|
|
RETURNS TRIGGER AS $$
|
|
BEGIN
|
|
NEW.updated_at = NOW();
|
|
RETURN NEW;
|
|
END;
|
|
$$ language 'plpgsql';
|
|
|
|
-- Create trigger to automatically update updated_at
|
|
DROP TRIGGER IF EXISTS update_devices_updated_at ON devices;
|
|
CREATE TRIGGER update_devices_updated_at
|
|
BEFORE UPDATE ON devices
|
|
FOR EACH ROW
|
|
EXECUTE FUNCTION update_updated_at_column();
|