92 lines
2.7 KiB
PL/PgSQL
92 lines
2.7 KiB
PL/PgSQL
-- Activity Status Table Setup for n8n Integration
|
|
-- This table stores real-time activity data from various sources
|
|
|
|
-- Drop existing table if it exists
|
|
DROP TABLE IF EXISTS activity_status CASCADE;
|
|
|
|
-- Create the activity_status table
|
|
CREATE TABLE activity_status (
|
|
id SERIAL PRIMARY KEY,
|
|
|
|
-- Activity (Coding, Reading, etc.)
|
|
activity_type VARCHAR(50), -- 'coding', 'listening', 'watching', 'gaming', 'reading'
|
|
activity_details TEXT,
|
|
activity_project VARCHAR(255),
|
|
activity_language VARCHAR(50),
|
|
activity_repo VARCHAR(255),
|
|
|
|
-- Music (Spotify, Apple Music)
|
|
music_playing BOOLEAN DEFAULT FALSE,
|
|
music_track VARCHAR(255),
|
|
music_artist VARCHAR(255),
|
|
music_album VARCHAR(255),
|
|
music_platform VARCHAR(50), -- 'spotify', 'apple'
|
|
music_progress INTEGER, -- 0-100 (percentage)
|
|
music_album_art TEXT, -- URL to album art
|
|
|
|
-- Watching (YouTube, Netflix, Twitch)
|
|
watching_title VARCHAR(255),
|
|
watching_platform VARCHAR(50), -- 'youtube', 'netflix', 'twitch'
|
|
watching_type VARCHAR(50), -- 'video', 'stream', 'movie', 'series'
|
|
|
|
-- Gaming (Steam, PlayStation, Xbox, Discord)
|
|
gaming_game VARCHAR(255),
|
|
gaming_platform VARCHAR(50), -- 'steam', 'playstation', 'xbox', 'discord'
|
|
gaming_status VARCHAR(50), -- 'playing', 'idle'
|
|
|
|
-- Status (Mood & Custom Message)
|
|
status_mood VARCHAR(10), -- emoji like '😊', '💻', '🎮', '😴'
|
|
status_message TEXT,
|
|
|
|
-- Timestamps
|
|
created_at TIMESTAMP DEFAULT NOW(),
|
|
updated_at TIMESTAMP DEFAULT NOW()
|
|
);
|
|
|
|
-- Create index for faster queries
|
|
CREATE INDEX idx_activity_status_updated_at ON activity_status(updated_at DESC);
|
|
|
|
-- Insert default row (will be updated by n8n workflows)
|
|
INSERT INTO activity_status (
|
|
id,
|
|
activity_type,
|
|
activity_details,
|
|
music_playing,
|
|
status_mood,
|
|
status_message
|
|
) VALUES (
|
|
1,
|
|
NULL,
|
|
NULL,
|
|
FALSE,
|
|
'💻',
|
|
'Getting started...'
|
|
);
|
|
|
|
-- Create function to automatically update updated_at timestamp
|
|
CREATE OR REPLACE FUNCTION update_activity_status_timestamp()
|
|
RETURNS TRIGGER AS $$
|
|
BEGIN
|
|
NEW.updated_at = NOW();
|
|
RETURN NEW;
|
|
END;
|
|
$$ LANGUAGE plpgsql;
|
|
|
|
-- Create trigger to call the function on UPDATE
|
|
CREATE TRIGGER trigger_update_activity_status_timestamp
|
|
BEFORE UPDATE ON activity_status
|
|
FOR EACH ROW
|
|
EXECUTE FUNCTION update_activity_status_timestamp();
|
|
|
|
-- Grant permissions (adjust as needed)
|
|
-- GRANT SELECT, INSERT, UPDATE ON activity_status TO your_app_user;
|
|
-- GRANT USAGE, SELECT ON SEQUENCE activity_status_id_seq TO your_app_user;
|
|
|
|
-- Display success message
|
|
DO $$
|
|
BEGIN
|
|
RAISE NOTICE '✅ Activity Status table created successfully!';
|
|
RAISE NOTICE '📝 You can now configure your n8n workflows to update this table.';
|
|
RAISE NOTICE '🔗 See docs/N8N_INTEGRATION.md for setup instructions.';
|
|
END $$;
|