Update Tagstore to work with MySQL, Blockstore to work with utf8mb4
Description
When I rebased https://github.com/open-craft/blockstore/pull/7 in preparation for merge, a couple tests broke (specifically, emoji tags weren't working and case-sensitive tags + case-insensitive search was not working). Here's what eventually I arrived at to fix them.
This PR:
Uses a migration to force Blockstore's MySQL database to use the `utf8mb4` encoding and `utf8mb4_unicode_ci` collation. These are generally recommended by everyone for new projects, and we already had some design decisions in place to be compatible with those. (However, without the fixes in this PR, it wasn't actually possible to use blockstore with `utf8mb4`)
Changes tagstore from being case-sensitive for tags to "preserve case but tags must be case-insensitively unique". I think that's better anyways, and it doesn't matter because on MySQL (and only MySQL) django doesn't allow you to do case-insensitive searches on a column that has case-sensitive collation.
Testing instructions:
1. Drop all tables in your blockstore database, or re-create it, or run all django app migrations to `zero`.
1. Check out this branch.
1. Run `make blockstore-shell` then `./manage.py migrate`
1. Run `make test` to confirm the tests pass.
Assignee
Reporter
Labels
Contributor Name
Repo
Customer
Epic Link
OSCM Assignee
Platform Map Area (Levels 1 & 2)
Platform Map Area (Levels 3 & 4)
Blended Hour Utilization Percentage
edX Theme
edX Squad
Github Lines Added
Github Lines Deleted
Priority
