From 54d6fae88b50c6cc27d52f2fdc387163f3531751 Mon Sep 17 00:00:00 2001 From: Ran Guin Date: Wed, 14 Jul 2021 18:01:02 -0700 Subject: add referrals, waiting list tables to legacy schema --- db/models/referrals.js | 89 +++++++++++++++++++++++++++++++++++++++++++++++ db/models/waiting_list.js | 44 +++++++++++++++++++++++ 2 files changed, 133 insertions(+) create mode 100644 db/models/referrals.js create mode 100644 db/models/waiting_list.js diff --git a/db/models/referrals.js b/db/models/referrals.js new file mode 100644 index 00000000..39248540 --- /dev/null +++ b/db/models/referrals.js @@ -0,0 +1,89 @@ +const { DataTypes } = require('sequelize'); + +const attributes = { + id: { + type: DataTypes.INTEGER(11), + allowNull: false, + defaultValue: null, + primaryKey: true, + autoIncrement: true, + comment: null, + field: "id" + }, + user_id: { + type: DataTypes.INTEGER(11), + allowNull: true, + defaultValue: null, + primaryKey: false, + autoIncrement: false, + comment: null, + field: "user_id" + }, + sponsor_id: { + type: DataTypes.INTEGER(11), + allowNull: true, + defaultValue: null, + primaryKey: false, + autoIncrement: false, + comment: null, + field: "sponsor_id" + }, + + token: { + type: DataTypes.STRING(255), + allowNull: true, + defaultValue: null, + primaryKey: false, + autoIncrement: false, + comment: null, + field: "token" + }, + expiry: { + type: DataTypes.DATE(), + allowNull: true, + defaultValue: null, + primaryKey: false, + autoIncrement: false, + comment: null, + field: "token" + }, + status: { + type: DataTypes.ENUM, + values: ['available', 'used', 'expired', 'cancelled'], + allowNull: true, + defaultValue: 'available', + primaryKey: false, + autoIncrement: false, + comment: null, + field: "token" + } +}; + +const options = { + tableName: "referrals", + comment: "", + indexes: [] +}; + +db["Referral"] = db.define("referrals_model", attributes, options); + +// exports.up = function(knex) { +// return knex.schema.createTable('referrals', function(t) { +// t.increments('id').unsigned().primary(); +// t.int('user_id').nullable(); +// t.foreign('user_id').references('users.id'); + +// t.int('sponsor_id').notNull(); +// t.foreign('sponsor_id').references('users.id'); + +// t.string('token').notNull(); +// t.string('expiry').nullable(); +// t.enum('status', ['available', 'used', 'expired', 'cancelled']).notNull().defaultTo('available'); + +// t.timestamps(); +// }) +// }; + +// exports.down = function(knex) { +// return knex.schema.dropTable('referrals'); +// }; diff --git a/db/models/waiting_list.js b/db/models/waiting_list.js new file mode 100644 index 00000000..a5c18f65 --- /dev/null +++ b/db/models/waiting_list.js @@ -0,0 +1,44 @@ +const { DataTypes } = require('sequelize'); + +const attributes = { + id: { + type: DataTypes.INTEGER(11), + primaryKey: true, + autoIncrement: true, + allowNull: false + }, + email: { + type: DataTypes.STRING(255), + validate: { + isEmail: true + } + }, + phone: { + type: DataTypes.STRING(255), + validate: { + is: /^[0-9]+$/ // replace spaces, brackets, dashes dynamically prior to create + } + }, + status: { + type: DataTypes.ENUM, + values: ['pending', 'activated', 'expired', 'cancelled'], + defaultValue: 'pending', + allowNull: false + } +} + +const options = { + tableName: "waiting_list", + comment: "Users on waiting list", + timestamps: true, + createdAt: 'created_at', + updatedAt: 'updated_at', + indexes: [ + { + unique: true, + fields: ['email', 'sms'] + } + ] +}; + +db["WaitingList"] = db.define("waiting_list_model", attributes, options); -- cgit v1.2.3