![]() Server : Apache/2 System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 User : gositeme ( 1004) PHP Version : 8.2.29 Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname Directory : /home/gositeme/domains/soundstudiopro.com/private_html/ |
-- Social Features Database Tables
-- Run this SQL to create the necessary tables for likes, comments, and social features
-- Track Likes Table
CREATE TABLE IF NOT EXISTS track_likes (
id INT AUTO_INCREMENT PRIMARY KEY,
track_id INT NOT NULL,
user_id INT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY unique_track_user (track_id, user_id),
FOREIGN KEY (track_id) REFERENCES music_tracks(id) ON DELETE CASCADE,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
-- Track Comments Table
CREATE TABLE IF NOT EXISTS track_comments (
id INT AUTO_INCREMENT PRIMARY KEY,
track_id INT NOT NULL,
user_id INT NOT NULL,
comment TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (track_id) REFERENCES music_tracks(id) ON DELETE CASCADE,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
-- Track Views Table
CREATE TABLE IF NOT EXISTS track_views (
id INT AUTO_INCREMENT PRIMARY KEY,
track_id INT NOT NULL,
user_id INT NULL,
ip_address VARCHAR(45),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (track_id) REFERENCES music_tracks(id) ON DELETE CASCADE,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE SET NULL
);
-- Track Plays Table
CREATE TABLE IF NOT EXISTS track_plays (
id INT AUTO_INCREMENT PRIMARY KEY,
track_id INT NOT NULL,
user_id INT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (track_id) REFERENCES music_tracks(id) ON DELETE CASCADE,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE SET NULL
);
-- Track Shares Table
CREATE TABLE IF NOT EXISTS track_shares (
id INT AUTO_INCREMENT PRIMARY KEY,
track_id INT NOT NULL,
user_id INT NULL,
share_type VARCHAR(50) DEFAULT 'general',
platform VARCHAR(50) DEFAULT 'unknown',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (track_id) REFERENCES music_tracks(id) ON DELETE CASCADE,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE SET NULL
);
-- Track Votes Table (for upvote/downvote functionality)
CREATE TABLE IF NOT EXISTS track_votes (
id INT AUTO_INCREMENT PRIMARY KEY,
track_id INT NOT NULL,
user_id INT NOT NULL,
vote_type ENUM('up', 'down') NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY unique_vote (track_id, user_id),
FOREIGN KEY (track_id) REFERENCES music_tracks(id) ON DELETE CASCADE,
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);
-- User Follows Table
CREATE TABLE IF NOT EXISTS user_follows (
id INT AUTO_INCREMENT PRIMARY KEY,
follower_id INT NOT NULL,
following_id INT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
UNIQUE KEY unique_follow (follower_id, following_id),
FOREIGN KEY (follower_id) REFERENCES users(id) ON DELETE CASCADE,
FOREIGN KEY (following_id) REFERENCES users(id) ON DELETE CASCADE
);
-- User Friends Table
CREATE TABLE IF NOT EXISTS user_friends (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
friend_id INT NOT NULL,
status ENUM('pending', 'accepted', 'rejected') DEFAULT 'pending',
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
UNIQUE KEY unique_friendship (user_id, friend_id),
FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE,
FOREIGN KEY (friend_id) REFERENCES users(id) ON DELETE CASCADE
);
-- Create indexes for performance
CREATE INDEX IF NOT EXISTS idx_track_likes_track ON track_likes(track_id);
CREATE INDEX IF NOT EXISTS idx_track_likes_user ON track_likes(user_id);
CREATE INDEX IF NOT EXISTS idx_track_likes_created ON track_likes(created_at);
CREATE INDEX IF NOT EXISTS idx_track_comments_track ON track_comments(track_id);
CREATE INDEX IF NOT EXISTS idx_track_comments_user ON track_comments(user_id);
CREATE INDEX IF NOT EXISTS idx_track_comments_created ON track_comments(created_at);
CREATE INDEX IF NOT EXISTS idx_track_views_track ON track_views(track_id);
CREATE INDEX IF NOT EXISTS idx_track_views_user ON track_views(user_id);
CREATE INDEX IF NOT EXISTS idx_track_views_created ON track_views(created_at);
CREATE INDEX IF NOT EXISTS idx_track_plays_track ON track_plays(track_id);
CREATE INDEX IF NOT EXISTS idx_track_plays_user ON track_plays(user_id);
CREATE INDEX IF NOT EXISTS idx_track_plays_created ON track_plays(created_at);
CREATE INDEX IF NOT EXISTS idx_track_shares_track ON track_shares(track_id);
CREATE INDEX IF NOT EXISTS idx_track_shares_user ON track_shares(user_id);
CREATE INDEX IF NOT EXISTS idx_track_shares_created ON track_shares(created_at);
CREATE INDEX IF NOT EXISTS idx_track_votes_track ON track_votes(track_id);
CREATE INDEX IF NOT EXISTS idx_track_votes_user ON track_votes(user_id);
CREATE INDEX IF NOT EXISTS idx_track_votes_created ON track_votes(created_at);
CREATE INDEX IF NOT EXISTS idx_user_follows_follower ON user_follows(follower_id);
CREATE INDEX IF NOT EXISTS idx_user_follows_following ON user_follows(following_id);
CREATE INDEX IF NOT EXISTS idx_user_follows_created ON user_follows(created_at);
CREATE INDEX IF NOT EXISTS idx_user_friends_user ON user_friends(user_id);
CREATE INDEX IF NOT EXISTS idx_user_friends_friend ON user_friends(friend_id);
CREATE INDEX IF NOT EXISTS idx_user_friends_status ON user_friends(status);
-- Insert sample data for testing (optional)
-- INSERT INTO track_likes (track_id, user_id) VALUES (1, 1), (1, 2), (2, 1);
-- INSERT INTO track_comments (track_id, user_id, comment) VALUES (1, 1, 'Great track!'), (1, 2, 'Love this!');
-- INSERT INTO track_views (track_id, user_id, ip_address) VALUES (1, 1, '127.0.0.1'), (1, 2, '127.0.0.1');
-- INSERT INTO track_plays (track_id, user_id) VALUES (1, 1), (1, 2), (2, 1);
-- INSERT INTO track_shares (track_id, user_id, share_type, platform) VALUES (1, 1, 'social', 'twitter'), (1, 2, 'social', 'facebook');
-- INSERT INTO user_follows (follower_id, following_id) VALUES (1, 2), (2, 1);
-- INSERT INTO user_friends (user_id, friend_id, status) VALUES (1, 2, 'accepted'), (2, 3, 'pending');