Skip to content

Commit 5493fbb

Browse files
committed
update migrations
1 parent c5e102e commit 5493fbb

File tree

3 files changed

+94
-56
lines changed

3 files changed

+94
-56
lines changed

migrations/1696849524727-createUsersTable.ts

Lines changed: 17 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -6,63 +6,24 @@ export class CreateUsersTable1696849524727 implements MigrationInterface {
66
queryRunner.createTable(new Table({
77
name: 'users',
88
columns: [
9-
{
10-
name: "id",
11-
type: "int",
12-
isPrimary: true,
13-
isGenerated: true,
14-
},
15-
{
16-
name: "uuid",
17-
type: "varchar",
18-
isUnique: true,
19-
},
20-
{
21-
name: "name",
22-
type: "varchar",
23-
},
24-
{
25-
name: "username",
26-
type: "varchar",
27-
isUnique: true,
28-
},
29-
{
30-
name: "email",
31-
type: "varchar",
32-
isUnique: true,
33-
},
34-
{
35-
name: "phone",
36-
type: "varchar",
37-
isUnique: true,
38-
isNullable: true,
39-
},
40-
{
41-
name: "avatar",
42-
type: "varchar",
43-
isNullable: true,
44-
},
45-
{
46-
name: "email_verified_at",
47-
type: "timestamp",
48-
isNullable: true,
49-
},
50-
{
51-
name: "phone_verified_at",
52-
type: "timestamp",
53-
isNullable: true,
54-
},
55-
{
56-
name: "created_at",
57-
type: "timestamp",
58-
default: "now()",
59-
},
60-
{
61-
name: "updated_at",
62-
type: "timestamp",
63-
default: "now()",
64-
}
9+
{name: "id",type: "int",isPrimary: true,isGenerated: true},
10+
{name: "uuid",type: "varchar",isUnique: true},
11+
{name: "name", type: "varchar"},
12+
{name: "username",type: "varchar",isUnique: true},
13+
{name: "password",type: "varchar",isUnique: true},
14+
{name: "email",type: "varchar",isUnique: true},
15+
{name: "phone",type: "varchar",isUnique: true,isNullable: true},
16+
{name: "avatar",type: "varchar",isNullable: true},
17+
{name: "email_verified_at",type: "timestamp",isNullable: true},
18+
{name: "phone_verified_at",type: "timestamp",isNullable: true},
19+
{name: "created_at",type: "timestamp",default: "now()"},
20+
{name: "updated_at",type: "timestamp",default: "now()"}
6521
],
22+
indices: [
23+
{columnNames: ['id']},
24+
{columnNames: ['email']},
25+
{columnNames: ['username']},
26+
]
6627
}));
6728
}
6829

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
import { hash } from 'bcrypt';
2+
import { MigrationInterface, QueryRunner } from "typeorm"
3+
import { v4 } from 'uuid';
4+
5+
export class CreateNewAdminUser1697109279164 implements MigrationInterface {
6+
7+
public async up(queryRunner: QueryRunner): Promise<void> {
8+
const adminPassword = await hash(process.env.ADMIN_PASSWORD ?? 'secret', 10)
9+
// queryRunner.query(`
10+
// INSERT INTO users (name, email, password)
11+
// VALUES ('Admin', '[email protected]', '${adminPassword}')
12+
// `)
13+
14+
await queryRunner.connect();
15+
16+
const query = queryRunner.manager.createQueryBuilder();
17+
await query.insert().into('users').values([{
18+
"uuid": v4(),
19+
"username": "admin",
20+
"name": "Admin",
21+
"email": "[email protected]",
22+
"password": adminPassword
23+
}]).execute()
24+
25+
}
26+
27+
public async down(queryRunner: QueryRunner): Promise<void> {
28+
await queryRunner.connect();
29+
30+
const query = queryRunner.manager.createQueryBuilder();
31+
await query.delete().from('users').where({email: "[email protected]"}).execute()
32+
}
33+
34+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import { MigrationInterface, QueryRunner, Table } from "typeorm"
2+
3+
export class CreateUserDevices1697110840362 implements MigrationInterface {
4+
5+
public async up(queryRunner: QueryRunner): Promise<void> {
6+
await queryRunner.createTable(new Table({
7+
name: 'user_devices',
8+
columns: [
9+
{ name: 'id', type: 'serial', isPrimary: true },
10+
{ name: 'user_id', type: 'integer' },
11+
{ name: 'unique_id', type: 'varchar' },
12+
{ name: 'name', type: 'varchar' },
13+
{ name: 'brand', type: 'varchar' },
14+
{ name: 'os', type: 'varchar' },
15+
{ name: 'platform', type: 'varchar' },
16+
{ name: 'last_login', type: 'json' },
17+
{ name: 'current_login', type: 'json' },
18+
{ name: 'access_token', type: 'varchar', isNullable: true },
19+
{ name: 'refresh_token', type: 'varchar', isNullable: true },
20+
{ name: 'fcm_token', type: 'varchar' },
21+
{ name: 'preference', type: 'varchar' },
22+
{ name: 'status', type: 'varchar' },
23+
{ name: 'status_reason', type: 'varchar' },
24+
{ name: 'updated_at', type: 'timestamp', default: 'now()' },
25+
{ name: 'created_at', type: 'timestamp', default: 'now()' },
26+
],
27+
uniques: [
28+
{
29+
columnNames: ['user_id', 'unique_id'],
30+
}
31+
],
32+
indices: [
33+
{columnNames: ['id']},
34+
{columnNames: ['user_id']},
35+
]
36+
}));
37+
}
38+
39+
public async down(queryRunner: QueryRunner): Promise<void> {
40+
await queryRunner.dropTable('user_devices');
41+
}
42+
43+
}

0 commit comments

Comments
 (0)