aboutsummaryrefslogtreecommitdiffstats
path: root/db/migrations/s2/user_adjustments.js
blob: cbe179771ae889dacd04a60d2c52142cdc7aca8d (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
export const up = function(knex) {
  return Promise.all([

    // move security fields to separate t (potentially different access permissions)
    
    knex.schema.createTable('user_security', function (t) {
      t.increments('id').unsigned().primary();
      t.int('user_id').notNull();
      t.foreign('user_id').references('users.user_id');

      t.boolean('twofa').notNull().defaultTo(false);
      t.string('pin').notNull();
      t.string('otp_secret').nullable();
      t.string('seed').nullable();
    }),

    knex.raw("INSERT INTO user_security (user_id, twofa, pin, otp_secret, seed) SELECT users.id, twofa, pin, otpsecret, seed FROM users"),

    // move user-customizeable fields to separate t (potentially different access permissions)

    knex.schema.createTable('user_preferences', function (t) {
      t.increments('id').unsigned().primary();
      t.int('user_id').notNull();
      t.foreign('user_id').references('users.user_id');

      t.enum('default_unit', ['SAT', 'BTC', 'CAD']).notNull().defaultTo('SAT');
      t.enum('default_currency', ['CAD', 'USD']).notNull().defaultTo('CAD');
      t.enum('default_fiat', ['CAD', 'USD']).notNull().defaultTo('CAD');
      t.set('show_currencies', ['CAD', 'USD']).notNull().defaultTo('CAD');
    }),
    
    knex.raw("INSERT INTO user_preferences (user_id, default_unit, default_currency, default_fiat, show_currencies) SELECT users.id, unit, currency, fiat, currencies FROM users"),
    
    // remove deprecated fields
    
    knex.schema.table('users', function (t) {
      t.string('uuid');
      t.enum('access', ['Anonymous', 'Member', 'Admin']).defaultTo('Anonymous');

      t.dropColumn('account_id');
      t.dropColumn('unit');
      t.dropColumn('fiat');
      t.dropColumn('currency');
      t.dropColumn('currencies');
    })
  ])
  
};

export const down = function(knex) {
  return Promise.all([
    knex.schema.table('users', function (t) {
      t.dropColumn('uuid');
      t.dropColumn('access');

      t.int('account_id');
      t.string('unit');
      t.string('fiat');
      t.string('currency');
      t.string('currencies');
    }),

    knex.schema.dropTable('user_preferences'),
    knex.schema.dropTable('user_security'),
  ]);
};