mirror of
https://github.com/immich-app/immich.git
synced 2024-12-22 01:47:08 +02:00
Update server dependencies and fixed Typeorm API changes in new version (#276)
* Fixed dependencies * Adapt typeorm API to be compatible with new version * Fixed typeorm API in tests * Remove console.log
This commit is contained in:
parent
5f00d8b9c6
commit
a2e1d4caa2
@ -3,7 +3,7 @@ import { AssetAlbumEntity } from '@app/database/entities/asset-album.entity';
|
||||
import { UserAlbumEntity } from '@app/database/entities/user-album.entity';
|
||||
import { Injectable } from '@nestjs/common';
|
||||
import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { getConnection, Repository, SelectQueryBuilder } from 'typeorm';
|
||||
import { Repository, SelectQueryBuilder, DataSource } from 'typeorm';
|
||||
import { AddAssetsDto } from './dto/add-assets.dto';
|
||||
import { AddUsersDto } from './dto/add-users.dto';
|
||||
import { CreateAlbumDto } from './dto/create-album.dto';
|
||||
@ -36,10 +36,12 @@ export class AlbumRepository implements IAlbumRepository {
|
||||
|
||||
@InjectRepository(UserAlbumEntity)
|
||||
private userAlbumRepository: Repository<UserAlbumEntity>,
|
||||
|
||||
private dataSource: DataSource,
|
||||
) {}
|
||||
|
||||
async create(ownerId: string, createAlbumDto: CreateAlbumDto): Promise<AlbumEntity> {
|
||||
return getConnection().transaction(async (transactionalEntityManager) => {
|
||||
return this.dataSource.transaction(async (transactionalEntityManager) => {
|
||||
// Create album entity
|
||||
const newAlbum = new AlbumEntity();
|
||||
newAlbum.ownerId = ownerId;
|
||||
|
@ -154,7 +154,7 @@ export class AssetService {
|
||||
|
||||
public async getAssetThumbnail(assetId: string): Promise<StreamableFile> {
|
||||
try {
|
||||
const asset = await this.assetRepository.findOne({ id: assetId });
|
||||
const asset = await this.assetRepository.findOne({ where: { id: assetId } });
|
||||
if (!asset) {
|
||||
throw new NotFoundException('Asset not found');
|
||||
}
|
||||
|
@ -18,9 +18,10 @@ export class AuthService {
|
||||
) {}
|
||||
|
||||
private async validateUser(loginCredential: LoginCredentialDto): Promise<UserEntity | null> {
|
||||
const user = await this.userRepository.findOne(
|
||||
{ email: loginCredential.email },
|
||||
{
|
||||
const user = await this.userRepository.findOne({
|
||||
where: {
|
||||
email: loginCredential.email,
|
||||
},
|
||||
select: [
|
||||
'id',
|
||||
'email',
|
||||
@ -32,8 +33,7 @@ export class AuthService {
|
||||
'profileImagePath',
|
||||
'shouldChangePassword',
|
||||
],
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
if (!user) {
|
||||
return null;
|
||||
|
@ -33,7 +33,7 @@ export class CommunicationGateway implements OnGatewayConnection, OnGatewayDisco
|
||||
? await this.immichJwtService.validateToken(accessToken)
|
||||
: { status: false, userId: null };
|
||||
|
||||
if (!res.status) {
|
||||
if (!res.status || res.userId == null) {
|
||||
client.emit('error', 'unauthorized');
|
||||
client.disconnect();
|
||||
return;
|
||||
|
@ -15,8 +15,10 @@ export class DeviceInfoService {
|
||||
|
||||
async create(createDeviceInfoDto: CreateDeviceInfoDto, authUser: AuthUserDto) {
|
||||
const res = await this.deviceRepository.findOne({
|
||||
where: {
|
||||
deviceId: createDeviceInfoDto.deviceId,
|
||||
userId: authUser.id,
|
||||
},
|
||||
});
|
||||
|
||||
if (res) {
|
||||
|
@ -38,7 +38,7 @@ export class UserService {
|
||||
}
|
||||
|
||||
async getUserInfo(authUser: AuthUserDto) {
|
||||
return this.userRepository.findOne({ id: authUser.id });
|
||||
return this.userRepository.findOne({ where: { id: authUser.id } });
|
||||
}
|
||||
|
||||
async getUserCount(isAdmin: boolean) {
|
||||
@ -85,7 +85,7 @@ export class UserService {
|
||||
}
|
||||
|
||||
async updateUser(updateUserDto: UpdateUserDto) {
|
||||
const user = await this.userRepository.findOne(updateUserDto.id);
|
||||
const user = await this.userRepository.findOne({ where: { id: updateUserDto.id } });
|
||||
if (!user) {
|
||||
throw new NotFoundException('User not found');
|
||||
}
|
||||
@ -148,7 +148,7 @@ export class UserService {
|
||||
|
||||
async getUserProfileImage(userId: string, res: Res) {
|
||||
try {
|
||||
const user = await this.userRepository.findOne({ id: userId });
|
||||
const user = await this.userRepository.findOne({ where: { id: userId } });
|
||||
if (!user) {
|
||||
throw new NotFoundException('User not found');
|
||||
}
|
||||
|
@ -25,7 +25,7 @@ export class AdminRolesGuard implements CanActivate {
|
||||
return false;
|
||||
}
|
||||
|
||||
const user = await this.userRepository.findOne(userId);
|
||||
const user = await this.userRepository.findOne({ where: { id: userId } });
|
||||
if (!user) {
|
||||
return false;
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ export class JwtStrategy extends PassportStrategy(Strategy, 'jwt') {
|
||||
|
||||
async validate(payload: JwtPayloadDto) {
|
||||
const { userId } = payload;
|
||||
const user = await this.usersRepository.findOne({ id: userId });
|
||||
const user = await this.usersRepository.findOne({ where: { id: userId } });
|
||||
|
||||
if (!user) {
|
||||
throw new UnauthorizedException('Failure to validate JWT payload');
|
||||
|
@ -2,7 +2,7 @@ import { Injectable, Logger } from '@nestjs/common';
|
||||
import { Cron, CronExpression } from '@nestjs/schedule';
|
||||
import { InjectRepository } from '@nestjs/typeorm';
|
||||
import { Repository } from 'typeorm';
|
||||
import { AssetEntity } from '@app/database/entities/asset.entity';
|
||||
import { AssetEntity, AssetType } from '@app/database/entities/asset.entity';
|
||||
import { InjectQueue } from '@nestjs/bull';
|
||||
import { Queue } from 'bull';
|
||||
import { randomUUID } from 'crypto';
|
||||
@ -44,7 +44,7 @@ export class ScheduleTasksService {
|
||||
async videoConversion() {
|
||||
const assets = await this.assetRepository.find({
|
||||
where: {
|
||||
type: 'VIDEO',
|
||||
type: AssetType.VIDEO,
|
||||
mimeType: 'video/quicktime',
|
||||
encodedVideoPath: '',
|
||||
},
|
||||
|
@ -1,15 +1,18 @@
|
||||
import { getConnection } from 'typeorm';
|
||||
import { DataSource } from 'typeorm';
|
||||
import { CanActivate, ExecutionContext } from '@nestjs/common';
|
||||
import { TestingModuleBuilder } from '@nestjs/testing';
|
||||
import { AuthUserDto } from '../src/decorators/auth-user.decorator';
|
||||
import { JwtAuthGuard } from '../src/modules/immich-jwt/guards/jwt-auth.guard';
|
||||
import databaseConfig from '@app/database/config/database.config';
|
||||
|
||||
type CustomAuthCallback = () => AuthUserDto;
|
||||
|
||||
export async function clearDb() {
|
||||
const entities = getConnection().entityMetadatas;
|
||||
const db = new DataSource(databaseConfig);
|
||||
|
||||
const entities = db.entityMetadatas;
|
||||
for (const entity of entities) {
|
||||
const repository = getConnection().getRepository(entity.name);
|
||||
const repository = db.getRepository(entity.name);
|
||||
await repository.query(`TRUNCATE ${entity.tableName} RESTART IDENTITY CASCADE;`);
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
import { TypeOrmModuleOptions } from '@nestjs/typeorm';
|
||||
import { PostgresConnectionOptions } from 'typeorm/driver/postgres/PostgresConnectionOptions';
|
||||
|
||||
export const databaseConfig: TypeOrmModuleOptions = {
|
||||
export const databaseConfig: PostgresConnectionOptions = {
|
||||
type: 'postgres',
|
||||
host: process.env.DB_HOSTNAME || 'immich_postgres',
|
||||
port: 5432,
|
||||
@ -10,11 +11,7 @@ export const databaseConfig: TypeOrmModuleOptions = {
|
||||
entities: [__dirname + '/../**/*.entity.{js,ts}'],
|
||||
synchronize: false,
|
||||
migrations: [__dirname + '/../migrations/*.{js,ts}'],
|
||||
cli: {
|
||||
migrationsDir: __dirname + '/../migrations',
|
||||
},
|
||||
migrationsRun: true,
|
||||
autoLoadEntities: true,
|
||||
};
|
||||
|
||||
export default databaseConfig;
|
||||
|
2307
server/package-lock.json
generated
2307
server/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -26,19 +26,19 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@mapbox/mapbox-sdk": "^0.13.3",
|
||||
"@nestjs/bull": "^0.4.2",
|
||||
"@nestjs/common": "^8.0.0",
|
||||
"@nestjs/config": "^1.1.6",
|
||||
"@nestjs/core": "^8.0.0",
|
||||
"@nestjs/jwt": "^8.0.0",
|
||||
"@nestjs/bull": "^0.5.5",
|
||||
"@nestjs/common": "^8.4.7",
|
||||
"@nestjs/config": "^2.1.0",
|
||||
"@nestjs/core": "^8.4.7",
|
||||
"@nestjs/jwt": "^8.0.1",
|
||||
"@nestjs/mapped-types": "*",
|
||||
"@nestjs/passport": "^8.1.0",
|
||||
"@nestjs/platform-express": "^8.0.0",
|
||||
"@nestjs/platform-fastify": "^8.2.6",
|
||||
"@nestjs/platform-socket.io": "^8.2.6",
|
||||
"@nestjs/passport": "^8.2.2",
|
||||
"@nestjs/platform-express": "^8.4.7",
|
||||
"@nestjs/platform-fastify": "^8.4.7",
|
||||
"@nestjs/platform-socket.io": "^8.4.7",
|
||||
"@nestjs/schedule": "^2.0.1",
|
||||
"@nestjs/typeorm": "^8.0.3",
|
||||
"@nestjs/websockets": "^8.2.6",
|
||||
"@nestjs/typeorm": "^8.1.4",
|
||||
"@nestjs/websockets": "^8.4.7",
|
||||
"@socket.io/redis-adapter": "^7.1.0",
|
||||
"axios": "^0.26.0",
|
||||
"bcrypt": "^5.0.1",
|
||||
@ -61,12 +61,12 @@
|
||||
"sharp": "^0.28.0",
|
||||
"socket.io-redis": "^6.1.1",
|
||||
"systeminformation": "^5.11.0",
|
||||
"typeorm": "^0.2.41"
|
||||
"typeorm": "^0.3.6"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@nestjs/cli": "^8.2.4",
|
||||
"@nestjs/schematics": "^8.0.0",
|
||||
"@nestjs/testing": "^8.0.0",
|
||||
"@nestjs/cli": "^8.2.8",
|
||||
"@nestjs/schematics": "^8.0.11",
|
||||
"@nestjs/testing": "^8.4.7",
|
||||
"@types/bcrypt": "^5.0.0",
|
||||
"@types/bull": "^3.15.7",
|
||||
"@types/cron": "^2.0.0",
|
||||
|
Loading…
Reference in New Issue
Block a user