37325-vm/db/migrations/001_initial_schema.sql
Flatlogic Bot c7e40bdd09 1.1
2026-01-08 17:14:09 +00:00

74 lines
2.5 KiB
SQL

-- Initial Schema for User Management
CREATE TABLE IF NOT EXISTS `users` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(255) NOT NULL,
`email` VARCHAR(255) NOT NULL UNIQUE,
`password` VARCHAR(255) NOT NULL,
`profile_picture` VARCHAR(255) DEFAULT NULL,
`is_suspended` BOOLEAN DEFAULT FALSE,
`api_allowed` BOOLEAN DEFAULT TRUE,
`last_login` DATETIME DEFAULT NULL,
`last_login_ip` VARCHAR(45) DEFAULT NULL,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS `groups` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(255) NOT NULL UNIQUE,
`description` TEXT
) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS `user_groups` (
`user_id` INT,
`group_id` INT,
PRIMARY KEY (`user_id`, `group_id`),
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE,
FOREIGN KEY (`group_id`) REFERENCES `groups`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS `permissions` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`name` VARCHAR(255) NOT NULL UNIQUE,
`description` TEXT
) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS `group_permissions` (
`group_id` INT,
`permission_id` INT,
PRIMARY KEY (`group_id`, `permission_id`),
FOREIGN KEY (`group_id`) REFERENCES `groups`(`id`) ON DELETE CASCADE,
FOREIGN KEY (`permission_id`) REFERENCES `permissions`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS `login_logs` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`user_id` INT,
`ip_address` VARCHAR(45),
`login_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`status` ENUM('success', 'failed'),
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE SET NULL
) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS `active_sessions` (
`session_id` VARCHAR(128) NOT NULL PRIMARY KEY,
`user_id` INT NOT NULL UNIQUE,
`login_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`ip_address` VARCHAR(45),
FOREIGN KEY (`user_id`) REFERENCES `users`(`id`) ON DELETE CASCADE
) ENGINE=InnoDB;
-- Default Data
INSERT INTO `groups` (`id`, `name`, `description`) VALUES
(1, 'SuperAdmin', 'Full access to all system features.'),
(2, 'Admin', 'Administrative access to most features.'),
(3, 'User', 'Standard user access.');
-- Default SuperAdmin User (password: password123)
INSERT INTO `users` (`id`, `name`, `email`, `password`) VALUES
(1, 'Super Admin', 'admin@example.com', '$2y$10$fA.o.f8b.5L9zJ/Zc.915eB0GA9gISfCj2L5kI/A5d.4b5I3.f0Fm');
INSERT INTO `user_groups` (`user_id`, `group_id`) VALUES (1, 1);