start backend

This commit is contained in:
SlimusMinus
2026-03-26 00:21:30 +03:00
parent 611b1c82ad
commit 263242e469
56 changed files with 1524 additions and 23 deletions

View File

@@ -0,0 +1,57 @@
databaseChangeLog:
- changeSet:
id: 001-create-users
author: you
changes:
- createTable:
tableName: users
columns:
- column: { name: id, type: BIGSERIAL, constraints: { primaryKey: true } }
- column: { name: email, type: VARCHAR(255), constraints: { nullable: false, unique: true } }
- column: { name: password, type: VARCHAR(255), constraints: { nullable: false } }
- column: { name: created_at, type: TIMESTAMP }
- changeSet:
id: 002-create-posts
author: you
changes:
- createTable:
tableName: posts
columns:
- column: { name: id, type: BIGSERIAL, constraints: { primaryKey: true } }
- column: { name: type, type: VARCHAR(20) }
- column: { name: title, type: VARCHAR(255) }
- column: { name: description, type: TEXT }
- column: { name: category, type: VARCHAR(100) }
- column: { name: city, type: VARCHAR(100) }
- column: { name: district, type: VARCHAR(100) }
- column: { name: latitude, type: DOUBLE }
- column: { name: longitude, type: DOUBLE }
- column: { name: status, type: VARCHAR(20) }
- column: { name: created_at, type: TIMESTAMP }
- column: { name: user_id, type: BIGINT }
- addForeignKeyConstraint:
baseTableName: posts
baseColumnNames: user_id
referencedTableName: users
referencedColumnNames: id
constraintName: fk_posts_user # ✅ ДОБАВИТЬ
- changeSet:
id: 003-create-images
author: you
changes:
- createTable:
tableName: images
columns:
- column: { name: id, type: BIGSERIAL, constraints: { primaryKey: true } }
- column: { name: url, type: VARCHAR(500) }
- column: { name: post_id, type: BIGINT }
- addForeignKeyConstraint:
baseTableName: images
baseColumnNames: post_id
referencedTableName: posts
referencedColumnNames: id
constraintName: fk_images_post # ✅

View File

@@ -0,0 +1,37 @@
databaseChangeLog:
- changeSet:
id: 004-create-messages
author: you
changes:
- createTable:
tableName: messages
columns:
- column: { name: id, type: BIGSERIAL, constraints: { primaryKey: true } }
- column: { name: sender_id, type: BIGINT }
- column: { name: receiver_id, type: BIGINT }
- column: { name: content, type: TEXT }
- column: { name: created_at, type: TIMESTAMP }
- column: { name: is_read, type: BOOLEAN }
- addForeignKeyConstraint:
baseTableName: messages
baseColumnNames: sender_id
referencedTableName: users
referencedColumnNames: id
constraintName: fk_messages_sender # ✅
- addForeignKeyConstraint:
baseTableName: messages
baseColumnNames: receiver_id
referencedTableName: users
referencedColumnNames: id
constraintName: fk_messages_receiver # ✅
# 🔥 индекс для чата
- createIndex:
tableName: messages
indexName: idx_messages_users
columns:
- column: { name: sender_id }
- column: { name: receiver_id }
- column: { name: created_at }

View File

@@ -0,0 +1,31 @@
databaseChangeLog:
- changeSet:
id: 005-create-favorites
author: you
changes:
- createTable:
tableName: favorites
columns:
- column: { name: id, type: BIGSERIAL, constraints: { primaryKey: true } }
- column: { name: user_id, type: BIGINT }
- column: { name: post_id, type: BIGINT }
- addForeignKeyConstraint:
baseTableName: favorites
baseColumnNames: user_id
referencedTableName: users
referencedColumnNames: id
constraintName: fk_favorites_user # ✅
- addForeignKeyConstraint:
baseTableName: favorites
baseColumnNames: post_id
referencedTableName: posts
referencedColumnNames: id
constraintName: fk_favorites_post # ✅
# 🔥 защита от дублей
- addUniqueConstraint:
tableName: favorites
columnNames: user_id, post_id
constraintName: unique_user_post

View File

@@ -0,0 +1,9 @@
databaseChangeLog:
- include:
file: db/changelog/001-init.yaml
- include:
file: db/changelog/002-message.yaml
- include:
file: db/changelog/003-favorite.yaml