/* eslint-disable */ module.exports = { async up(queryInterface, Sequelize) { // Typ-Tabelle (konfigurierbar ohne Code): falukant_type.reputation_action await queryInterface.sequelize.query(` CREATE TABLE IF NOT EXISTS falukant_type.reputation_action ( id serial PRIMARY KEY, tr text NOT NULL UNIQUE, cost integer NOT NULL CHECK (cost >= 0), base_gain integer NOT NULL CHECK (base_gain >= 0), decay_factor double precision NOT NULL CHECK (decay_factor > 0 AND decay_factor <= 1), min_gain integer NOT NULL DEFAULT 0 CHECK (min_gain >= 0), decay_window_days integer NOT NULL DEFAULT 7 CHECK (decay_window_days >= 1 AND decay_window_days <= 365) ); `); // Log-Tabelle: falukant_log.reputation_action await queryInterface.sequelize.query(` CREATE TABLE IF NOT EXISTS falukant_log.reputation_action ( id serial PRIMARY KEY, falukant_user_id integer NOT NULL, action_type_id integer NOT NULL, cost integer NOT NULL CHECK (cost >= 0), base_gain integer NOT NULL CHECK (base_gain >= 0), gain integer NOT NULL CHECK (gain >= 0), times_used_before integer NOT NULL CHECK (times_used_before >= 0), action_timestamp timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP ); `); await queryInterface.sequelize.query(` CREATE INDEX IF NOT EXISTS reputation_action_log_user_type_idx ON falukant_log.reputation_action (falukant_user_id, action_type_id); `); await queryInterface.sequelize.query(` CREATE INDEX IF NOT EXISTS reputation_action_log_ts_idx ON falukant_log.reputation_action (action_timestamp); `); }, async down(queryInterface, Sequelize) { await queryInterface.sequelize.query(`DROP TABLE IF EXISTS falukant_log.reputation_action;`); await queryInterface.sequelize.query(`DROP TABLE IF EXISTS falukant_type.reputation_action;`); }, };