-- +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