aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRan Guin <[email protected]>2021-07-14 18:01:02 -0700
committerRan Guin <[email protected]>2021-07-14 18:01:02 -0700
commit54d6fae88b50c6cc27d52f2fdc387163f3531751 (patch)
tree12cd282d41c44a754137a5867275fd83c9e395a7
parent4eacfda951f8275ac4f3a1283368884e53285ed0 (diff)
downloadcoinos-server-54d6fae88b50c6cc27d52f2fdc387163f3531751.tar.gz
coinos-server-54d6fae88b50c6cc27d52f2fdc387163f3531751.zip
add referrals, waiting list tables to legacy schema
-rw-r--r--db/models/referrals.js89
-rw-r--r--db/models/waiting_list.js44
2 files changed, 133 insertions, 0 deletions
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);