From c87994ac052d8232a2b7f98d6b819328a4d58a7b Mon Sep 17 00:00:00 2001 From: guimroque Date: Wed, 26 Jun 2024 11:27:08 -0300 Subject: [PATCH 1/2] feat: remove expired tokens to database --- packages/api/src/modules/auth/services.ts | 17 +++++++++++++++++ packages/api/src/server/storage.ts | 2 ++ 2 files changed, 19 insertions(+) diff --git a/packages/api/src/modules/auth/services.ts b/packages/api/src/modules/auth/services.ts index 163c36d65..458ff06d6 100644 --- a/packages/api/src/modules/auth/services.ts +++ b/packages/api/src/modules/auth/services.ts @@ -11,6 +11,7 @@ import { IFindTokenParams, ISignInResponse, } from './types'; +import { LessThanOrEqual } from 'typeorm'; export class AuthService implements IAuthService { async signIn(payload: ICreateUserTokenPayload): Promise { @@ -100,4 +101,20 @@ export class AuthService implements IAuthService { }); }); } + + async clearExpiredTokens(): Promise { + try { + await UserToken.delete({ + expired_at: LessThanOrEqual(new Date()), + }); + } catch (e) { + throw new Internal({ + type: ErrorTypes.Internal, + title: 'Error on clear expired tokens', + detail: e, + }); + } + } + + } diff --git a/packages/api/src/server/storage.ts b/packages/api/src/server/storage.ts index 60e8e4fdf..055e70249 100644 --- a/packages/api/src/server/storage.ts +++ b/packages/api/src/server/storage.ts @@ -1,6 +1,7 @@ import { User } from "@src/models"; import UserToken from "@src/models/UserToken"; import { Workspace } from "@src/models/Workspace"; +import { AuthService } from "@src/modules/auth/services"; import { TokenUtils } from "@src/utils"; import { isPast } from "date-fns"; @@ -72,6 +73,7 @@ export class SessionStorage { this.data.delete(sessionId); } } + new AuthService().clearExpiredTokens(); this.nextClear = new Date().getTime() + CLEAR_TIME; } From 6aa8fec872854c11645000f7753f1fde70f0a870 Mon Sep 17 00:00:00 2001 From: guimroque Date: Wed, 26 Jun 2024 16:05:34 -0300 Subject: [PATCH 2/2] chore: indexers --- packages/api/src/models/Notification.ts | 10 ++++++++++ packages/api/src/models/Predicate.ts | 10 ++++++++++ packages/api/src/models/Transaction.ts | 12 ++++++++++++ packages/api/src/models/UserToken.ts | 12 ++++++++++++ packages/api/src/models/Workspace.ts | 12 ++++++++++++ 5 files changed, 56 insertions(+) diff --git a/packages/api/src/models/Notification.ts b/packages/api/src/models/Notification.ts index 6ce6ab2b1..9e1f5bb69 100644 --- a/packages/api/src/models/Notification.ts +++ b/packages/api/src/models/Notification.ts @@ -44,3 +44,13 @@ class Notification extends Base { } export { Notification }; + + +// -- Criação de índice para a coluna 'user_id' +// CREATE INDEX idx_notifications_user_id ON notifications(user_id); + +// -- Criação de índice para a coluna 'title' +// CREATE INDEX idx_notifications_title ON notifications(title); + +// -- Criação de índice para a coluna 'read' +// CREATE INDEX idx_notifications_read ON notifications(read); diff --git a/packages/api/src/models/Predicate.ts b/packages/api/src/models/Predicate.ts index c383cd99d..dd968600e 100644 --- a/packages/api/src/models/Predicate.ts +++ b/packages/api/src/models/Predicate.ts @@ -68,3 +68,13 @@ class Predicate extends Base { } export { Predicate }; + +// -- Criação de índice para a coluna 'owner_id' na tabela 'predicates' +// CREATE INDEX idx_predicates_owner_id ON predicates(owner_id); + +// -- Criação de índice para a coluna 'workspace_id' na tabela 'predicates' +// CREATE INDEX idx_predicates_workspace_id ON predicates(workspace_id); + +// -- Criação de índice para a coluna 'version_id' na tabela 'predicates' +// CREATE INDEX idx_predicates_version_id ON predicates(version_id); + diff --git a/packages/api/src/models/Transaction.ts b/packages/api/src/models/Transaction.ts index 8dfcfe3d3..2fd05e776 100644 --- a/packages/api/src/models/Transaction.ts +++ b/packages/api/src/models/Transaction.ts @@ -70,3 +70,15 @@ class Transaction extends Base { } export { Transaction }; + +// -- Criação de índice para a coluna 'transaction_id' na tabela 'assets' +// CREATE INDEX idx_assets_transaction_id ON assets(transaction_id); + +// -- Criação de índice para a coluna 'transaction_id' na tabela 'witnesses' +// CREATE INDEX idx_witnesses_transaction_id ON witnesses(transaction_id); + +// -- Criação de índice para a coluna 'predicate_id' na tabela 'transactions' +// CREATE INDEX idx_transactions_predicate_id ON transactions(predicate_id); + +// -- Criação de índice para a coluna 'created_by' na tabela 'transactions' +// CREATE INDEX idx_transactions_created_by ON transactions(created_by); diff --git a/packages/api/src/models/UserToken.ts b/packages/api/src/models/UserToken.ts index b8efe5a9b..39b6288a8 100644 --- a/packages/api/src/models/UserToken.ts +++ b/packages/api/src/models/UserToken.ts @@ -57,3 +57,15 @@ class UserToken extends Base { } export default UserToken; + +// -- Criação de índice para a coluna 'workspace_id' na tabela 'user_tokens' +// CREATE INDEX idx_user_tokens_workspace_id ON user_tokens(workspace_id); + +// -- Criação de índice para a coluna 'user_id' na tabela 'user_tokens' +// CREATE INDEX idx_user_tokens_user_id ON user_tokens(user_id); + +// -- Criação de índice para a coluna 'encoder' na tabela 'user_tokens' +// CREATE INDEX idx_user_tokens_encoder ON user_tokens(encoder); + +// -- Criação de índice para a coluna 'expired_at' na tabela 'user_tokens' +// CREATE INDEX idx_user_tokens_expired_at ON user_tokens(expired_at); diff --git a/packages/api/src/models/Workspace.ts b/packages/api/src/models/Workspace.ts index e228643f9..bc634a501 100644 --- a/packages/api/src/models/Workspace.ts +++ b/packages/api/src/models/Workspace.ts @@ -127,3 +127,15 @@ class Workspace extends Base { } export { Workspace }; + +// -- Criação de índice para a coluna 'owner_id' na tabela 'workspace' +// CREATE INDEX idx_workspace_owner_id ON workspace(owner_id); + +// -- Criação de índice para a coluna 'workspace_id' na tabela 'predicates' +// CREATE INDEX idx_predicates_workspace_id ON predicates(workspace_id); + +// -- Criação de índice para a coluna 'workspace_id' na tabela 'workspace_users' +// CREATE INDEX idx_workspace_users_workspace_id ON workspace_users(workspace_id); + +// -- Criação de índice para a coluna 'user_id' na tabela 'workspace_users' +// CREATE INDEX idx_workspace_users_user_id ON workspace_users(user_id);