[db] add migrations and some optimizations of queries #1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Просьба воспринимать все ниже написанное исключительно в качестве рекомендаций по дальнейшему изучению, если данная тема действительно интересна, без цели как-то раскритиковать проект. Буду рад ответить на любые вопросы в рамках описанных ниже пунктов. Этот PR касается в первую очередь работы с БД.
sqlite
механизма миграций. Можно было, конечно, изобрести велосипед сPRAGMA user_version
, но это на самостоятельное изучение.username
сделано уникальным. Но пока там хранится не уникальный ИД, а имя пользователя - это все очень сомнительно. Если уникальностьctx.from.username
еще имеет место быть, то ужctx.from.first_name
может повторяться. Если бы это было "боевое" приложение, то пришлось бы заморочиться с миграцией без потери данных - на самостоятельное изучение.last_played
оставлено как естьNOT NULL
потому что в SQLite достаточно ограниченные возможностиALTER TABLE
в части работы со столбцами. Как и п.2 это повод уделять больше внимания проектированию БД, чтобы потом не разгребать последствия. Как убратьNOT NULL
у столбца тоже на самостоятельное изучение.upsert
-подход, чтобы одним запросом можно было и создать запись, если ее нет, и обновить, если она есть.Что не сделано, но руки чешутся:
Спасибо за возможность познакомиться с новыми библиотеками на данном проекте.