BREAKING CHANGE: Removed core_companies, core_users, core_user_roles tables Migrations: - Create 020_unify_schema.sql: adds tenant_id, email, name to users table - Create user_roles table (replaces core_user_roles) - Disable 009_create_core_tables.sql (renamed to .disabled) - Update 010_seed_super_admin.sql to use unified tables Backend Repositories: - company_repository.go: use companies table with INT id - user_repository.go: use users/user_roles with INT id conversion Seeders: - All seeders now use companies/users/user_roles tables - Removed all core_* table insertions - Query companies by slug to get SERIAL id This eliminates the redundancy between core_* and legacy tables.
33 lines
1.3 KiB
SQL
33 lines
1.3 KiB
SQL
-- Migration: Unify schema - add missing fields to users table
|
|
-- Description: Add fields from core_users to users table for unified architecture
|
|
|
|
-- Add tenant_id (references companies.id)
|
|
ALTER TABLE users ADD COLUMN IF NOT EXISTS tenant_id INT REFERENCES companies(id);
|
|
|
|
-- Add email if not exists (core_users had this)
|
|
ALTER TABLE users ADD COLUMN IF NOT EXISTS email VARCHAR(255);
|
|
|
|
-- Add name if not exists (mapped from full_name or separate)
|
|
ALTER TABLE users ADD COLUMN IF NOT EXISTS name VARCHAR(255);
|
|
|
|
-- Add status field for compatibility
|
|
ALTER TABLE users ADD COLUMN IF NOT EXISTS status VARCHAR(20) DEFAULT 'active';
|
|
|
|
-- Create user_roles table (replaces core_user_roles)
|
|
CREATE TABLE IF NOT EXISTS user_roles (
|
|
user_id INT NOT NULL REFERENCES users(id) ON DELETE CASCADE,
|
|
role VARCHAR(50) NOT NULL,
|
|
PRIMARY KEY (user_id, role)
|
|
);
|
|
|
|
-- Index for user_roles
|
|
CREATE INDEX IF NOT EXISTS idx_user_roles_user_id ON user_roles(user_id);
|
|
CREATE INDEX IF NOT EXISTS idx_user_roles_role ON user_roles(role);
|
|
|
|
-- Index for tenant lookup
|
|
CREATE INDEX IF NOT EXISTS idx_users_tenant_id ON users(tenant_id);
|
|
CREATE INDEX IF NOT EXISTS idx_users_email ON users(email);
|
|
|
|
-- Comments
|
|
COMMENT ON COLUMN users.tenant_id IS 'Company ID this user belongs to (NULL for superadmin)';
|
|
COMMENT ON TABLE user_roles IS 'Additional roles for users (e.g., admin, recruiter)';
|