обновление от 2025-10-08 для ветки 19SEP

This commit is contained in:
2025-10-08 21:04:10 +03:00
parent d11cf0ecb7
commit 1b0bf6f122
25 changed files with 7858 additions and 37 deletions

View File

@@ -0,0 +1,68 @@
-- Простая миграция для создания таблицы city_objects
-- Файл: migrations/create_city_objects_table_simple.sql
-- Создание таблицы city_objects
CREATE TABLE IF NOT EXISTS city_objects (
id SERIAL PRIMARY KEY,
city_id INTEGER NOT NULL,
name VARCHAR(255) NOT NULL DEFAULT '',
model_url VARCHAR(500) NOT NULL,
-- Позиция
pos_x DECIMAL(15, 6) NOT NULL DEFAULT 0,
pos_y DECIMAL(15, 6) NOT NULL DEFAULT 0,
pos_z DECIMAL(15, 6) NOT NULL DEFAULT 0,
-- Поворот (в радианах)
rot_x DECIMAL(15, 6) NOT NULL DEFAULT 0,
rot_y DECIMAL(15, 6) NOT NULL DEFAULT 0,
rot_z DECIMAL(15, 6) NOT NULL DEFAULT 0,
-- Масштаб
scale_x DECIMAL(15, 6) NOT NULL DEFAULT 1,
scale_y DECIMAL(15, 6) NOT NULL DEFAULT 1,
scale_z DECIMAL(15, 6) NOT NULL DEFAULT 1,
-- Дополнительные свойства
organization_id INTEGER NOT NULL DEFAULT 2,
rent DECIMAL(10, 2) NOT NULL DEFAULT 0,
tax DECIMAL(10, 2) NOT NULL DEFAULT 0,
collidable BOOLEAN NOT NULL DEFAULT false,
interior_id INTEGER NOT NULL DEFAULT 101,
textures VARCHAR(500) NOT NULL DEFAULT '-',
-- Метаданные
created_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP WITH TIME ZONE DEFAULT CURRENT_TIMESTAMP
);
-- Создание индексов для оптимизации запросов
CREATE INDEX IF NOT EXISTS idx_city_objects_city_id ON city_objects(city_id);
CREATE INDEX IF NOT EXISTS idx_city_objects_organization_id ON city_objects(organization_id);
CREATE INDEX IF NOT EXISTS idx_city_objects_interior_id ON city_objects(interior_id);
CREATE INDEX IF NOT EXISTS idx_city_objects_position ON city_objects(pos_x, pos_y, pos_z);
CREATE INDEX IF NOT EXISTS idx_city_objects_collidable ON city_objects(collidable);
-- Комментарии к таблице и колонкам
COMMENT ON TABLE city_objects IS 'Таблица объектов городов';
COMMENT ON COLUMN city_objects.id IS 'Уникальный идентификатор объекта';
COMMENT ON COLUMN city_objects.city_id IS 'ID города, к которому принадлежит объект';
COMMENT ON COLUMN city_objects.name IS 'Название объекта';
COMMENT ON COLUMN city_objects.model_url IS 'URL модели объекта';
COMMENT ON COLUMN city_objects.pos_x IS 'X координата позиции';
COMMENT ON COLUMN city_objects.pos_y IS 'Y координата позиции';
COMMENT ON COLUMN city_objects.pos_z IS 'Z координата позиции';
COMMENT ON COLUMN city_objects.rot_x IS 'X компонент поворота (радианы)';
COMMENT ON COLUMN city_objects.rot_y IS 'Y компонент поворота (радианы)';
COMMENT ON COLUMN city_objects.rot_z IS 'Z компонент поворота (радианы)';
COMMENT ON COLUMN city_objects.scale_x IS 'X компонент масштаба';
COMMENT ON COLUMN city_objects.scale_y IS 'Y компонент масштаба';
COMMENT ON COLUMN city_objects.scale_z IS 'Z компонент масштаба';
COMMENT ON COLUMN city_objects.organization_id IS 'ID организации-владельца';
COMMENT ON COLUMN city_objects.rent IS 'Стоимость аренды';
COMMENT ON COLUMN city_objects.tax IS 'Налог';
COMMENT ON COLUMN city_objects.collidable IS 'Имеет ли объект коллизию';
COMMENT ON COLUMN city_objects.interior_id IS 'ID интерьера объекта';
COMMENT ON COLUMN city_objects.textures IS 'Информация о текстурах';
COMMENT ON COLUMN city_objects.created_at IS 'Время создания записи';
COMMENT ON COLUMN city_objects.updated_at IS 'Время последнего обновления записи';