1
0
mirror of https://github.com/xuthus83/pigallery2.git synced 2024-11-03 21:04:03 +08:00
pigallery2/backend/model/sql/SharingManager.ts

61 lines
2.1 KiB
TypeScript
Raw Normal View History

2018-03-31 03:30:30 +08:00
import {ISharingManager} from '../interfaces/ISharingManager';
import {SharingDTO} from '../../../common/entities/SharingDTO';
import {SQLConnection} from './SQLConnection';
import {SharingEntity} from './enitites/SharingEntity';
import {Config} from '../../../common/config/private/Config';
import {PasswordHelper} from '../PasswordHelper';
2018-05-24 09:53:53 +08:00
import {DeleteResult} from 'typeorm';
2017-07-04 01:17:49 +08:00
export class SharingManager implements ISharingManager {
2018-05-24 09:53:53 +08:00
private static async removeExpiredLink(): Promise<DeleteResult> {
const connection = await SQLConnection.getConnection();
2018-05-24 09:53:53 +08:00
return await connection
.getRepository(SharingEntity)
2018-03-31 03:30:30 +08:00
.createQueryBuilder('share')
.where('expires < :now', {now: Date.now()})
.delete()
.execute();
}
2017-07-04 01:17:49 +08:00
async findOne(filter: any): Promise<SharingDTO> {
await SharingManager.removeExpiredLink();
const connection = await SQLConnection.getConnection();
2017-07-04 01:17:49 +08:00
return await connection.getRepository(SharingEntity).findOne(filter);
}
async createSharing(sharing: SharingDTO): Promise<SharingDTO> {
await SharingManager.removeExpiredLink();
const connection = await SQLConnection.getConnection();
2017-07-10 04:36:25 +08:00
if (sharing.password) {
2017-07-11 15:01:59 +08:00
sharing.password = PasswordHelper.cryptPassword(sharing.password);
2017-07-10 04:36:25 +08:00
}
2017-10-20 00:08:07 +08:00
return await connection.getRepository(SharingEntity).save(sharing);
2017-07-04 01:17:49 +08:00
}
async updateSharing(inSharing: SharingDTO): Promise<SharingDTO> {
const connection = await SQLConnection.getConnection();
2017-07-04 01:17:49 +08:00
const sharing = await connection.getRepository(SharingEntity).findOne({
2017-07-04 01:17:49 +08:00
id: inSharing.id,
creator: <any>inSharing.creator.id,
2017-07-04 01:17:49 +08:00
path: inSharing.path
});
if (sharing.timeStamp < Date.now() - Config.Server.sharing.updateTimeout) {
throw new Error('Sharing is locked, can\'t update anymore');
2017-07-04 01:17:49 +08:00
}
2018-02-04 09:50:05 +08:00
if (inSharing.password == null) {
sharing.password = null;
} else {
sharing.password = PasswordHelper.cryptPassword(inSharing.password);
}
2017-07-04 01:17:49 +08:00
sharing.includeSubfolders = inSharing.includeSubfolders;
sharing.expires = inSharing.expires;
2017-10-20 00:08:07 +08:00
return await connection.getRepository(SharingEntity).save(sharing);
2017-07-04 01:17:49 +08:00
}
}