Implement mutations:
- create language
- delete language
- user follows a language
- user unfollows a language
- new word
Context's user_auth now contains either the user's ID or nothing if
not authentificated.
This commit changes the primary key of words to a serial number. That
way, two words with the same normalized value will not collide with
one another.
It also adds two new tables in the database:
- Users following languages
- Users learning words
The former can represent two stages of learning a word:
- Either the user is currently learning it
- Or they consider they know it and don’t need to work on it anymore
These two new tables now have their API query available through the
GraphQL API.
This commit also fixes the issue of word-related tables and types not
being dropped when resetting the database.
Languages now refer to other languages they are translated to through
an additional table rather than an array of identifiers. This ensures
no orphan identifier remains when a language is deleted.
The primary key of languages is now a unique identifier rather than
the name of the language itself. It now allows for multiple languages
to have the same name. Their unique identifier is now a v4 UUID.
Set Diesel to specific version 2.0.2, since 2.0 apparently does not
mean the latest version of 2.0.z and 2.0 has issues with its uuid
feature.
Cleanup and simplify some code.
Some more GraphQL documentation on available queries.