diff options
author | MCMXC <16797721+mcmxcdev@users.noreply.github.com> | 2024-02-10 18:19:14 -0700 |
---|---|---|
committer | Vijay A <vraravam@users.noreply.github.com> | 2024-02-17 21:51:20 +0530 |
commit | a61e73c33b2e80d5af58e3dcfa2efe74245cd065 (patch) | |
tree | d5343ad245b4156662920896dedf14d9284051f8 /app/Models | |
parent | upgrade node to 20.11.1 and other minor versions for pkgs (#104) (diff) | |
download | ferdium-server-a61e73c33b2e80d5af58e3dcfa2efe74245cd065.tar.gz ferdium-server-a61e73c33b2e80d5af58e3dcfa2efe74245cd065.tar.zst ferdium-server-a61e73c33b2e80d5af58e3dcfa2efe74245cd065.zip |
refactor: project maintenance
- work in progress
Diffstat (limited to 'app/Models')
-rw-r--r-- | app/Models/Recipe.ts | 16 | ||||
-rw-r--r-- | app/Models/Service.ts | 25 | ||||
-rw-r--r-- | app/Models/Token.ts | 27 | ||||
-rw-r--r-- | app/Models/User.ts | 85 | ||||
-rw-r--r-- | app/Models/Workspace.ts | 27 |
5 files changed, 87 insertions, 93 deletions
diff --git a/app/Models/Recipe.ts b/app/Models/Recipe.ts index fce5f3d..bca6e76 100644 --- a/app/Models/Recipe.ts +++ b/app/Models/Recipe.ts | |||
@@ -1,23 +1,23 @@ | |||
1 | import { DateTime } from 'luxon'; | 1 | import { DateTime } from 'luxon' |
2 | import { BaseModel, column } from '@ioc:Adonis/Lucid/Orm'; | 2 | import { BaseModel, column } from '@adonisjs/lucid/orm' |
3 | 3 | ||
4 | export default class Recipe extends BaseModel { | 4 | export default class Recipe extends BaseModel { |
5 | @column({ isPrimary: true }) | 5 | @column({ isPrimary: true }) |
6 | public id: number; | 6 | public id: number |
7 | 7 | ||
8 | @column() | 8 | @column() |
9 | public name: string; | 9 | public name: string |
10 | 10 | ||
11 | @column() | 11 | @column() |
12 | public recipeId: string; | 12 | public recipeId: string |
13 | 13 | ||
14 | // TODO: Type the data object. | 14 | // TODO: Type the data object. |
15 | @column() | 15 | @column() |
16 | public data: object; | 16 | public data: object |
17 | 17 | ||
18 | @column.dateTime({ autoCreate: true }) | 18 | @column.dateTime({ autoCreate: true }) |
19 | public createdAt: DateTime; | 19 | public createdAt: DateTime |
20 | 20 | ||
21 | @column.dateTime({ autoCreate: true, autoUpdate: true }) | 21 | @column.dateTime({ autoCreate: true, autoUpdate: true }) |
22 | public updatedAt: DateTime; | 22 | public updatedAt: DateTime |
23 | } | 23 | } |
diff --git a/app/Models/Service.ts b/app/Models/Service.ts index af1a8e1..0cd2afb 100644 --- a/app/Models/Service.ts +++ b/app/Models/Service.ts | |||
@@ -1,40 +1,41 @@ | |||
1 | import { DateTime } from 'luxon'; | 1 | import { DateTime } from 'luxon' |
2 | import { BaseModel, column, HasOne, hasOne } from '@ioc:Adonis/Lucid/Orm'; | 2 | import { BaseModel, column, hasOne } from '@adonisjs/lucid/orm' |
3 | import User from './User'; | 3 | import User from './User.js' |
4 | import type { HasOne } from '@adonisjs/lucid/types/relations' | ||
4 | 5 | ||
5 | export default class Service extends BaseModel { | 6 | export default class Service extends BaseModel { |
6 | @column({ isPrimary: true }) | 7 | @column({ isPrimary: true }) |
7 | public id: number; | 8 | public id: number |
8 | 9 | ||
9 | @hasOne(() => User, { | 10 | @hasOne(() => User, { |
10 | foreignKey: 'userId', | 11 | foreignKey: 'userId', |
11 | }) | 12 | }) |
12 | public user: HasOne<typeof User>; | 13 | public user: HasOne<typeof User> |
13 | 14 | ||
14 | @column({ | 15 | @column({ |
15 | columnName: 'userId', | 16 | columnName: 'userId', |
16 | }) | 17 | }) |
17 | public userId: number; | 18 | public userId: number |
18 | 19 | ||
19 | @column({ | 20 | @column({ |
20 | columnName: 'serviceId', | 21 | columnName: 'serviceId', |
21 | }) | 22 | }) |
22 | public serviceId: string; | 23 | public serviceId: string |
23 | 24 | ||
24 | @column() | 25 | @column() |
25 | public name: string; | 26 | public name: string |
26 | 27 | ||
27 | @column({ | 28 | @column({ |
28 | columnName: 'recipeId', | 29 | columnName: 'recipeId', |
29 | }) | 30 | }) |
30 | public recipeId: string; | 31 | public recipeId: string |
31 | 32 | ||
32 | @column() | 33 | @column() |
33 | public settings: string; | 34 | public settings: string |
34 | 35 | ||
35 | @column.dateTime({ autoCreate: true }) | 36 | @column.dateTime({ autoCreate: true }) |
36 | public createdAt: DateTime; | 37 | public createdAt: DateTime |
37 | 38 | ||
38 | @column.dateTime({ autoCreate: true, autoUpdate: true }) | 39 | @column.dateTime({ autoCreate: true, autoUpdate: true }) |
39 | public updatedAt: DateTime; | 40 | public updatedAt: DateTime |
40 | } | 41 | } |
diff --git a/app/Models/Token.ts b/app/Models/Token.ts index 4f85ebc..a8c29dd 100644 --- a/app/Models/Token.ts +++ b/app/Models/Token.ts | |||
@@ -1,38 +1,39 @@ | |||
1 | import { DateTime } from 'luxon'; | 1 | import { DateTime } from 'luxon' |
2 | import { BaseModel, column, HasOne, hasOne } from '@ioc:Adonis/Lucid/Orm'; | 2 | import { BaseModel, column, hasOne } from '@adonisjs/lucid/orm' |
3 | import User from './User'; | 3 | import User from './User.js' |
4 | import { HasOne } from '@adonisjs/lucid/types/relations' | ||
4 | 5 | ||
5 | export default class Token extends BaseModel { | 6 | export default class Token extends BaseModel { |
6 | @column({ isPrimary: true }) | 7 | @column({ isPrimary: true }) |
7 | public id: number; | 8 | public id: number |
8 | 9 | ||
9 | @hasOne(() => User, { | 10 | @hasOne(() => User, { |
10 | localKey: 'user_id', | 11 | localKey: 'user_id', |
11 | foreignKey: 'id', | 12 | foreignKey: 'id', |
12 | }) | 13 | }) |
13 | public user: HasOne<typeof User>; | 14 | public user: HasOne<typeof User> |
14 | 15 | ||
15 | @column() | 16 | @column() |
16 | public user_id: number; | 17 | public user_id: number |
17 | 18 | ||
18 | @column() | 19 | @column() |
19 | public token: string; | 20 | public token: string |
20 | 21 | ||
21 | @column() | 22 | @column() |
22 | public type: string; | 23 | public type: string |
23 | 24 | ||
24 | @column() | 25 | @column() |
25 | public is_revoked: boolean; | 26 | public is_revoked: boolean |
26 | 27 | ||
27 | @column() | 28 | @column() |
28 | public name: string; | 29 | public name: string |
29 | 30 | ||
30 | @column.dateTime() | 31 | @column.dateTime() |
31 | public expires_at: DateTime; | 32 | public expires_at: DateTime |
32 | 33 | ||
33 | @column.dateTime({ autoCreate: true }) | 34 | @column.dateTime({ autoCreate: true }) |
34 | public created_at: DateTime; | 35 | public created_at: DateTime |
35 | 36 | ||
36 | @column.dateTime({ autoCreate: true, autoUpdate: true }) | 37 | @column.dateTime({ autoCreate: true, autoUpdate: true }) |
37 | public updated_at: DateTime; | 38 | public updated_at: DateTime |
38 | } | 39 | } |
diff --git a/app/Models/User.ts b/app/Models/User.ts index 0b8e688..cc2c553 100644 --- a/app/Models/User.ts +++ b/app/Models/User.ts | |||
@@ -1,75 +1,70 @@ | |||
1 | import { DateTime } from 'luxon'; | 1 | import { DateTime } from 'luxon' |
2 | import { | 2 | import { BaseModel, beforeSave, column, hasMany } from '@adonisjs/lucid/orm' |
3 | BaseModel, | 3 | import hash from '@adonisjs/core/services/hash' |
4 | beforeSave, | 4 | import emitter from '@adonisjs/core/services/emitter' |
5 | column, | 5 | import moment from 'moment' |
6 | HasMany, | 6 | import Encryption from '@ioc:Adonis/Core/Encryption' |
7 | hasMany, | 7 | import randtoken from 'rand-token' |
8 | } from '@ioc:Adonis/Lucid/Orm'; | 8 | import Token from './Token.js' |
9 | import Hash from '@ioc:Adonis/Core/Hash'; | 9 | import Workspace from './Workspace.js' |
10 | import Event from '@ioc:Adonis/Core/Event'; | 10 | import Service from './Service.js' |
11 | import moment from 'moment'; | 11 | import mail from '@adonisjs/mail/services/main' |
12 | import Encryption from '@ioc:Adonis/Core/Encryption'; | 12 | import { url } from '#config/app' |
13 | import randtoken from 'rand-token'; | 13 | import { mailFrom } from '#config/dashboard' |
14 | import Token from './Token'; | 14 | import { HasMany } from '@adonisjs/lucid/types/relations' |
15 | import Workspace from './Workspace'; | ||
16 | import Service from './Service'; | ||
17 | import Mail from '@ioc:Adonis/Addons/Mail'; | ||
18 | import { url } from 'Config/app'; | ||
19 | import { mailFrom } from 'Config/dashboard'; | ||
20 | 15 | ||
21 | export default class User extends BaseModel { | 16 | export default class User extends BaseModel { |
22 | @column({ isPrimary: true }) | 17 | @column({ isPrimary: true }) |
23 | public id: number; | 18 | public id: number |
24 | 19 | ||
25 | @column() | 20 | @column() |
26 | public email: string; | 21 | public email: string |
27 | 22 | ||
28 | @column() | 23 | @column() |
29 | public username: string; | 24 | public username: string |
30 | 25 | ||
31 | @column() | 26 | @column() |
32 | public password: string; | 27 | public password: string |
33 | 28 | ||
34 | @column() | 29 | @column() |
35 | public lastname: string; | 30 | public lastname: string |
36 | 31 | ||
37 | // TODO: Type the settings object. | 32 | // TODO: Type the settings object. |
38 | @column() | 33 | @column() |
39 | public settings: object; | 34 | public settings: object |
40 | 35 | ||
41 | @column.dateTime({ autoCreate: true }) | 36 | @column.dateTime({ autoCreate: true }) |
42 | public created_at: DateTime; | 37 | public created_at: DateTime |
43 | 38 | ||
44 | @column.dateTime({ autoCreate: true, autoUpdate: true }) | 39 | @column.dateTime({ autoCreate: true, autoUpdate: true }) |
45 | public updated_at: DateTime; | 40 | public updated_at: DateTime |
46 | 41 | ||
47 | @beforeSave() | 42 | @beforeSave() |
48 | public static async hashPassword(user: User) { | 43 | public static async hashPassword(user: User) { |
49 | if (user.$dirty.password) { | 44 | if (user.$dirty.password) { |
50 | user.password = await Hash.make(user.password); | 45 | user.password = await hash.make(user.password) |
51 | } | 46 | } |
52 | } | 47 | } |
53 | 48 | ||
54 | @hasMany(() => Token, { | 49 | @hasMany(() => Token, { |
55 | foreignKey: 'user_id', | 50 | foreignKey: 'user_id', |
56 | }) | 51 | }) |
57 | public tokens: HasMany<typeof Token>; | 52 | public tokens: HasMany<typeof Token> |
58 | 53 | ||
59 | @hasMany(() => Service, { | 54 | @hasMany(() => Service, { |
60 | foreignKey: 'userId', | 55 | foreignKey: 'userId', |
61 | }) | 56 | }) |
62 | public services: HasMany<typeof Service>; | 57 | public services: HasMany<typeof Service> |
63 | 58 | ||
64 | @hasMany(() => Workspace, { | 59 | @hasMany(() => Workspace, { |
65 | foreignKey: 'userId', | 60 | foreignKey: 'userId', |
66 | }) | 61 | }) |
67 | public workspaces: HasMany<typeof Workspace>; | 62 | public workspaces: HasMany<typeof Workspace> |
68 | 63 | ||
69 | public async forgotPassword(): Promise<void> { | 64 | public async forgotPassword(): Promise<void> { |
70 | const token = await this.generateToken(this, 'forgot_password'); | 65 | const token = await this.generateToken(this, 'forgot_password') |
71 | 66 | ||
72 | await Mail.send(message => { | 67 | await mail.send((message) => { |
73 | message | 68 | message |
74 | .from(mailFrom) | 69 | .from(mailFrom) |
75 | .to(this.email) | 70 | .to(this.email) |
@@ -78,13 +73,13 @@ export default class User extends BaseModel { | |||
78 | username: this.username, | 73 | username: this.username, |
79 | appUrl: url, | 74 | appUrl: url, |
80 | token: token, | 75 | token: token, |
81 | }); | 76 | }) |
82 | }); | 77 | }) |
83 | 78 | ||
84 | await Event.emit('forgot:password', { | 79 | await emitter.emit('forgot:password', { |
85 | user: this, | 80 | user: this, |
86 | token, | 81 | token, |
87 | }); | 82 | }) |
88 | } | 83 | } |
89 | 84 | ||
90 | private async generateToken(user: User, type: string): Promise<string> { | 85 | private async generateToken(user: User, type: string): Promise<string> { |
@@ -93,21 +88,17 @@ export default class User extends BaseModel { | |||
93 | .query() | 88 | .query() |
94 | .where('type', type) | 89 | .where('type', type) |
95 | .where('is_revoked', false) | 90 | .where('is_revoked', false) |
96 | .where( | 91 | .where('updated_at', '>=', moment().subtract(24, 'hours').format('YYYY-MM-DD HH:mm:ss')) |
97 | 'updated_at', | ||
98 | '>=', | ||
99 | moment().subtract(24, 'hours').format('YYYY-MM-DD HH:mm:ss'), | ||
100 | ); | ||
101 | 92 | ||
102 | const row = await query.first(); | 93 | const row = await query.first() |
103 | if (row) { | 94 | if (row) { |
104 | return row.token; | 95 | return row.token |
105 | } | 96 | } |
106 | 97 | ||
107 | const token = Encryption.encrypt(randtoken.generate(16)); | 98 | const token = Encryption.encrypt(randtoken.generate(16)) |
108 | 99 | ||
109 | await user.related('tokens').create({ type, token }); | 100 | await user.related('tokens').create({ type, token }) |
110 | 101 | ||
111 | return token; | 102 | return token |
112 | } | 103 | } |
113 | } | 104 | } |
diff --git a/app/Models/Workspace.ts b/app/Models/Workspace.ts index 8648e02..c960ae4 100644 --- a/app/Models/Workspace.ts +++ b/app/Models/Workspace.ts | |||
@@ -1,41 +1,42 @@ | |||
1 | import { DateTime } from 'luxon'; | 1 | import { DateTime } from 'luxon' |
2 | import { BaseModel, column, HasOne, hasOne } from '@ioc:Adonis/Lucid/Orm'; | 2 | import { BaseModel, column, hasOne } from '@adonisjs/lucid/orm' |
3 | import User from './User'; | 3 | import User from './User.js' |
4 | import { HasOne } from '@adonisjs/lucid/types/relations' | ||
4 | 5 | ||
5 | export default class Workspace extends BaseModel { | 6 | export default class Workspace extends BaseModel { |
6 | @column({ isPrimary: true }) | 7 | @column({ isPrimary: true }) |
7 | public id: number; | 8 | public id: number |
8 | 9 | ||
9 | @column({ | 10 | @column({ |
10 | columnName: 'workspaceId', | 11 | columnName: 'workspaceId', |
11 | }) | 12 | }) |
12 | public workspaceId: string; | 13 | public workspaceId: string |
13 | 14 | ||
14 | @hasOne(() => User, { | 15 | @hasOne(() => User, { |
15 | foreignKey: 'userId', | 16 | foreignKey: 'userId', |
16 | }) | 17 | }) |
17 | public user: HasOne<typeof User>; | 18 | public user: HasOne<typeof User> |
18 | 19 | ||
19 | @column({ | 20 | @column({ |
20 | columnName: 'userId', | 21 | columnName: 'userId', |
21 | }) | 22 | }) |
22 | public userId: number; | 23 | public userId: number |
23 | 24 | ||
24 | @column() | 25 | @column() |
25 | public name: string; | 26 | public name: string |
26 | 27 | ||
27 | @column() | 28 | @column() |
28 | public order: number; | 29 | public order: number |
29 | 30 | ||
30 | @column() | 31 | @column() |
31 | public services: string; | 32 | public services: string |
32 | 33 | ||
33 | @column() | 34 | @column() |
34 | public data: string; | 35 | public data: string |
35 | 36 | ||
36 | @column.dateTime({ autoCreate: true }) | 37 | @column.dateTime({ autoCreate: true }) |
37 | public createdAt: DateTime; | 38 | public createdAt: DateTime |
38 | 39 | ||
39 | @column.dateTime({ autoCreate: true, autoUpdate: true }) | 40 | @column.dateTime({ autoCreate: true, autoUpdate: true }) |
40 | public updatedAt: DateTime; | 41 | public updatedAt: DateTime |
41 | } | 42 | } |