refactor: remove session entity (#17466)

* refactor: remove session entity

* fix: test

* update sql

* remote export
This commit is contained in:
Alex 2025-04-08 11:04:07 -05:00 committed by GitHub
parent 49be6d7fd8
commit e5ca79dd44
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 35 additions and 68 deletions

View File

@ -1,49 +0,0 @@
import { ExpressionBuilder } from 'kysely';
import { DB } from 'src/db';
import { UserEntity } from 'src/entities/user.entity';
export class SessionEntity {
id!: string;
token!: string;
userId!: string;
user!: UserEntity;
createdAt!: Date;
updatedAt!: Date;
updateId!: string;
deviceType!: string;
deviceOS!: string;
}
const userColumns = [
'id',
'email',
'createdAt',
'profileImagePath',
'isAdmin',
'shouldChangePassword',
'deletedAt',
'oauthId',
'updatedAt',
'storageLabel',
'name',
'quotaSizeInBytes',
'quotaUsageInBytes',
'status',
'profileChangedAt',
] as const;
export const withUser = (eb: ExpressionBuilder<DB, 'sessions'>) => {
return eb
.selectFrom('users')
.select(userColumns)
.select((eb) =>
eb
.selectFrom('user_metadata')
.whereRef('users.id', '=', 'user_metadata.userId')
.select((eb) => eb.fn('array_agg', [eb.table('user_metadata')]).as('metadata'))
.as('metadata'),
)
.whereRef('users.id', '=', 'sessions.userId')
.where('users.deletedAt', 'is', null)
.as('user');
};

View File

@ -45,20 +45,21 @@ from
inner join lateral (
select
"id",
"email",
"createdAt",
"profileImagePath",
"isAdmin",
"shouldChangePassword",
"deletedAt",
"oauthId",
"updatedAt",
"storageLabel",
"name",
"email",
"profileImagePath",
"profileChangedAt",
"createdAt",
"updatedAt",
"deletedAt",
"isAdmin",
"status",
"oauthId",
"profileImagePath",
"shouldChangePassword",
"storageLabel",
"quotaSizeInBytes",
"quotaUsageInBytes",
"status",
"profileChangedAt",
(
select
array_agg("user_metadata") as "metadata"

View File

@ -1,15 +1,30 @@
import { Injectable } from '@nestjs/common';
import { Insertable, Kysely, Updateable } from 'kysely';
import { ExpressionBuilder, Insertable, Kysely, Updateable } from 'kysely';
import { jsonObjectFrom } from 'kysely/helpers/postgres';
import { InjectKysely } from 'nestjs-kysely';
import { columns } from 'src/database';
import { DB, Sessions } from 'src/db';
import { DummyValue, GenerateSql } from 'src/decorators';
import { withUser } from 'src/entities/session.entity';
import { asUuid } from 'src/utils/database';
export type SessionSearchOptions = { updatedBefore: Date };
const withUser = (eb: ExpressionBuilder<DB, 'sessions'>) => {
return eb
.selectFrom('users')
.select(columns.userAdmin)
.select((eb) =>
eb
.selectFrom('user_metadata')
.whereRef('users.id', '=', 'user_metadata.userId')
.select((eb) => eb.fn('array_agg', [eb.table('user_metadata')]).as('metadata'))
.as('metadata'),
)
.whereRef('users.id', '=', 'sessions.userId')
.where('users.deletedAt', 'is', null)
.as('user');
};
@Injectable()
export class SessionRepository {
constructor(@InjectKysely() private db: Kysely<DB>) {}

View File

@ -1,6 +1,6 @@
import { AuthDto } from 'src/dtos/auth.dto';
import { SessionEntity } from 'src/entities/session.entity';
import { SharedLinkEntity } from 'src/entities/shared-link.entity';
import { SessionItem } from 'src/types';
const authUser = {
admin: {
@ -27,7 +27,7 @@ export const authStub = {
user: authUser.user1,
session: {
id: 'token-id',
} as SessionEntity,
} as SessionItem,
}),
user2: Object.freeze<AuthDto>({
user: {
@ -40,7 +40,7 @@ export const authStub = {
},
session: {
id: 'token-id',
} as SessionEntity,
} as SessionItem,
}),
adminSharedLink: Object.freeze<AuthDto>({
user: authUser.admin,

View File

@ -1,8 +1,8 @@
import { SessionEntity } from 'src/entities/session.entity';
import { SessionItem } from 'src/types';
import { userStub } from 'test/fixtures/user.stub';
export const sessionStub = {
valid: Object.freeze<SessionEntity>({
valid: Object.freeze<SessionItem>({
id: 'token-id',
token: 'auth_token',
userId: userStub.user1.id,
@ -13,7 +13,7 @@ export const sessionStub = {
deviceOS: '',
updateId: 'uuid-v7',
}),
inactive: Object.freeze<SessionEntity>({
inactive: Object.freeze<SessionItem>({
id: 'not_active',
token: 'auth_token',
userId: userStub.user1.id,