- Introduced Vocab Trainer functionality, including new routes for managing languages and chapters. - Implemented database schema for vocab-related tables to ensure data integrity. - Updated navigation and UI components to include Vocab Trainer in the social network menu. - Added translations for Vocab Trainer in both German and English locales, enhancing user accessibility.
62 lines
2.1 KiB
JavaScript
62 lines
2.1 KiB
JavaScript
/* eslint-disable */
|
|
'use strict';
|
|
|
|
module.exports = {
|
|
async up(queryInterface) {
|
|
// Sprache / Set, das geteilt werden kann
|
|
await queryInterface.sequelize.query(`
|
|
CREATE TABLE IF NOT EXISTS community.vocab_language (
|
|
id SERIAL PRIMARY KEY,
|
|
owner_user_id INTEGER NOT NULL,
|
|
name TEXT NOT NULL,
|
|
share_code TEXT NOT NULL,
|
|
created_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT NOW(),
|
|
CONSTRAINT vocab_language_owner_fk
|
|
FOREIGN KEY (owner_user_id)
|
|
REFERENCES community."user"(id)
|
|
ON DELETE CASCADE,
|
|
CONSTRAINT vocab_language_share_code_uniq UNIQUE (share_code)
|
|
);
|
|
`);
|
|
|
|
// Abos (Freunde)
|
|
await queryInterface.sequelize.query(`
|
|
CREATE TABLE IF NOT EXISTS community.vocab_language_subscription (
|
|
id SERIAL PRIMARY KEY,
|
|
user_id INTEGER NOT NULL,
|
|
language_id INTEGER NOT NULL,
|
|
created_at TIMESTAMP WITHOUT TIME ZONE NOT NULL DEFAULT NOW(),
|
|
CONSTRAINT vocab_language_subscription_user_fk
|
|
FOREIGN KEY (user_id)
|
|
REFERENCES community."user"(id)
|
|
ON DELETE CASCADE,
|
|
CONSTRAINT vocab_language_subscription_language_fk
|
|
FOREIGN KEY (language_id)
|
|
REFERENCES community.vocab_language(id)
|
|
ON DELETE CASCADE,
|
|
CONSTRAINT vocab_language_subscription_uniq UNIQUE (user_id, language_id)
|
|
);
|
|
`);
|
|
|
|
await queryInterface.sequelize.query(`
|
|
CREATE INDEX IF NOT EXISTS vocab_language_owner_idx
|
|
ON community.vocab_language(owner_user_id);
|
|
`);
|
|
await queryInterface.sequelize.query(`
|
|
CREATE INDEX IF NOT EXISTS vocab_language_subscription_user_idx
|
|
ON community.vocab_language_subscription(user_id);
|
|
`);
|
|
await queryInterface.sequelize.query(`
|
|
CREATE INDEX IF NOT EXISTS vocab_language_subscription_language_idx
|
|
ON community.vocab_language_subscription(language_id);
|
|
`);
|
|
},
|
|
|
|
async down(queryInterface) {
|
|
await queryInterface.sequelize.query(`DROP TABLE IF EXISTS community.vocab_language_subscription;`);
|
|
await queryInterface.sequelize.query(`DROP TABLE IF EXISTS community.vocab_language;`);
|
|
}
|
|
};
|
|
|
|
|