Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add mock database for local development #1107

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

viktorvorobev
Copy link

По мотивам вот этого #846

Накидал рандомных постов и данных в базу данных, сделал по одному типу каждого особого поста + несколько обычных постов.
Рандомные аватарки, забаненные пользователи, удаленные комментарии.
Я не понял, что @vas3k имел в виду за миграцию, я с базами данных не работал, но её добавил в docker-compose для локальной развертки. Собсна вот

@viktorvorobev viktorvorobev requested a review from vas3k as a code owner June 16, 2023 12:44
@@ -83,6 +83,8 @@ services:
- POSTGRES_DB=vas3k_club
ports:
- "5432:5432"
volumes:
- ./dump.sql:/docker-entrypoint-initdb.d/dummy_dump.sql
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Любопытно. А оно выполнится при инициализации базы? Я знал, что так работает с /docker-entrypoint-initdb.d/init.sql, но не уверен, что можно по-другому назвать файл.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

По-моему, докеру без разницы какие файлы линковать через volume :)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

По-моему, докеру без разницы какие файлы линковать через volume :)

Это да, но ты же хочешь проинициализировать базу своим дампом. Тут уже не в докере дело, а в образе postgres.

Но я сейчас проверил. Да, их образ сам запустит все *.sql файлы. Подробнее в "Initialization scripts" здесь:
https://hub.docker.com/_/postgres/

@igoose1
Copy link
Contributor

igoose1 commented Aug 14, 2023

В данном контексте, миграции — это python-файлы, с которыми Django умеет трекать изменения в схеме базы данной. Обычно они создаются автоматически, но в редких случаях их правят руками. Для приложения вроде твиттера миграция могла бы выглядеть так:

from django.db import migrations, models


class Migration(migrations.Migration):
    dependencies = [("migrations", "0001_initial")]

    operations = [
        migrations.AddField("Author", "rating", models.IntegerField(default=0)),  # к "Авторам" добавит INTEGER "rating"
    ]

Полтора года назад Вастрик предлагал добавить дамп в виде такой миграции (например, через RunSQL). Но я теперь не уверен, что это хорошее решение: я считаю, что надо дать разработчику выбор, добавлять ли тестовые данные. Иначе при каждом новом разворачивании придется вручную чистить базу от тестовых данных.

За дамп спасибо! Я пробежался по нему глазами: была проделана большая работа. Он полезен сообществу и его точно надо куда-то приспособить. Мне даже стало тоскливо, что за два месяца тебя не написали никакого фидбека.

Что делать дальше?

Я вижу такой вариант наилучшим: вмержить дамп, сделать так, чтобы база в docker compose автоматически его подхватывала (смотреть мой комментарий), написать о дампе в README, чтобы недокерные разработчики тоже о нем знали.

В миграциях ничего не меняем. При локальной разработке эти данные и так будут подгружаться и костыли с последней миграцией не нужны.

Кого-то может смутить файл на 4 мегабайта в проекте. Я думаю, в этом ничего страшного нет: это не бинарник, а SQL, поэтому в git оно хорошо сжимается (да, git автоматически сжимает объекты).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants