initial commit
This commit is contained in:
43
migrations/00007_create_ratings_table.sql
Normal file
43
migrations/00007_create_ratings_table.sql
Normal file
@@ -0,0 +1,43 @@
|
||||
-- +goose Up
|
||||
-- +goose StatementBegin
|
||||
|
||||
-- =========================================
|
||||
-- ТАБЛИЦА: ratings - Рейтинги волонтёров
|
||||
-- =========================================
|
||||
CREATE TABLE ratings (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
|
||||
-- Связи
|
||||
volunteer_response_id BIGINT NOT NULL UNIQUE REFERENCES volunteer_responses(id),
|
||||
volunteer_id BIGINT NOT NULL REFERENCES users(id),
|
||||
requester_id BIGINT NOT NULL REFERENCES users(id),
|
||||
request_id BIGINT NOT NULL REFERENCES requests(id),
|
||||
|
||||
-- Оценка
|
||||
rating INTEGER NOT NULL CHECK (rating >= 1 AND rating <= 5),
|
||||
comment TEXT,
|
||||
|
||||
-- Аудит
|
||||
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
|
||||
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
|
||||
);
|
||||
|
||||
-- Комментарии
|
||||
COMMENT ON TABLE ratings IS 'Рейтинги волонтёров за выполненную помощь';
|
||||
COMMENT ON COLUMN ratings.rating IS 'Оценка от 1 до 5 звёзд';
|
||||
COMMENT ON COLUMN ratings.volunteer_response_id IS 'Связь с откликом (один рейтинг на один отклик)';
|
||||
COMMENT ON COLUMN ratings.volunteer_id IS 'Денормализация для быстрого доступа';
|
||||
COMMENT ON COLUMN ratings.requester_id IS 'Кто оставил рейтинг';
|
||||
|
||||
-- Индексы
|
||||
CREATE INDEX idx_ratings_volunteer_id ON ratings(volunteer_id);
|
||||
CREATE INDEX idx_ratings_request_id ON ratings(request_id);
|
||||
CREATE INDEX idx_ratings_requester_id ON ratings(requester_id);
|
||||
CREATE INDEX idx_ratings_created_at ON ratings(created_at DESC);
|
||||
|
||||
-- +goose StatementEnd
|
||||
|
||||
-- +goose Down
|
||||
-- +goose StatementBegin
|
||||
DROP TABLE IF EXISTS ratings CASCADE;
|
||||
-- +goose StatementEnd
|
||||
Reference in New Issue
Block a user