-- +goose Up
-- +goose StatementBegin

-- =========================================
-- ТАБЛИЦА: roles - Роли пользователей
-- =========================================
CREATE TABLE roles (
    id BIGSERIAL PRIMARY KEY,
    name VARCHAR(50) NOT NULL UNIQUE,
    description TEXT,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);

COMMENT ON TABLE roles IS 'Справочник ролей для RBAC системы';
COMMENT ON COLUMN roles.name IS 'Уникальное название роли';

-- =========================================
-- ТАБЛИЦА: permissions - Разрешения системы
-- =========================================
CREATE TABLE permissions (
    id BIGSERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL UNIQUE,
    resource VARCHAR(50) NOT NULL,
    action VARCHAR(50) NOT NULL,
    description TEXT,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);

COMMENT ON TABLE permissions IS 'Справочник разрешений для RBAC системы';
COMMENT ON COLUMN permissions.resource IS 'Ресурс: request, user, complaint и т.д.';
COMMENT ON COLUMN permissions.action IS 'Действие: create, read, update, delete, moderate';

-- =========================================
-- ТАБЛИЦА: request_types - Типы заявок на помощь
-- =========================================
CREATE TABLE request_types (
    id BIGSERIAL PRIMARY KEY,
    name VARCHAR(100) NOT NULL UNIQUE,
    description TEXT,
    icon VARCHAR(50),
    is_active BOOLEAN DEFAULT TRUE,
    created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);

COMMENT ON TABLE request_types IS 'Справочник типов помощи (продукты, медикаменты, техника)';
COMMENT ON COLUMN request_types.icon IS 'Название иконки для UI';
COMMENT ON COLUMN request_types.is_active IS 'Активность типа (для скрытия без удаления)';

-- +goose StatementEnd

-- +goose Down
-- +goose StatementBegin
DROP TABLE IF EXISTS request_types CASCADE;
DROP TABLE IF EXISTS permissions CASCADE;
DROP TABLE IF EXISTS roles CASCADE;
-- +goose StatementEnd
