1
0
mirror of https://github.com/xuthus83/pigallery2.git synced 2025-01-14 14:43:17 +08:00
pigallery2/backend/model/mysql/MySQLConnection.ts

101 lines
2.7 KiB
TypeScript
Raw Normal View History

2016-12-27 16:09:47 +01:00
import "reflect-metadata";
2017-06-04 15:25:08 +02:00
import {Connection, createConnection} from "typeorm";
2016-12-27 16:09:47 +01:00
import {UserEntity} from "./enitites/UserEntity";
import {UserRoles} from "../../../common/entities/UserDTO";
2016-12-27 20:55:51 +01:00
import {PhotoEntity, PhotoMetadataEntity} from "./enitites/PhotoEntity";
import {DirectoryEntity} from "./enitites/DirectoryEntity";
2017-06-04 15:25:08 +02:00
import {Config} from "../../../common/config/private/Config";
2017-07-03 19:17:49 +02:00
import {SharingEntity} from "./enitites/SharingEntity";
2017-07-08 12:43:42 +02:00
import {DataBaseConfig} from "../../../common/config/private/IPrivateConfig";
2017-07-09 22:36:25 +02:00
import {PasswordHelper} from "../PasswordHelper";
2016-12-27 16:09:47 +01:00
export class MySQLConnection {
2017-07-03 19:17:49 +02:00
constructor() {
2016-12-27 16:09:47 +01:00
2017-07-03 19:17:49 +02:00
}
2016-12-27 16:09:47 +01:00
2017-07-03 19:17:49 +02:00
private static connection: Connection = null;
2016-12-27 16:09:47 +01:00
2017-07-03 19:17:49 +02:00
public static async getConnection(): Promise<Connection> {
2016-12-27 16:09:47 +01:00
2017-07-03 19:17:49 +02:00
if (this.connection == null) {
this.connection = await createConnection({
2017-07-08 12:43:42 +02:00
name: "main",
2017-07-03 19:17:49 +02:00
driver: {
type: "mysql",
host: Config.Server.database.mysql.host,
port: 3306,
username: Config.Server.database.mysql.username,
password: Config.Server.database.mysql.password,
database: Config.Server.database.mysql.database
},
entities: [
UserEntity,
DirectoryEntity,
PhotoMetadataEntity,
PhotoEntity,
SharingEntity
],
autoSchemaSync: true,
logging: {
logQueries: true,
logOnlyFailedQueries: true,
logFailedQueryError: true,
logSchemaCreation: true
}
});
2016-12-27 16:09:47 +01:00
}
2017-07-03 19:17:49 +02:00
return this.connection;
2016-12-27 16:09:47 +01:00
2017-07-03 19:17:49 +02:00
}
2016-12-27 16:09:47 +01:00
2017-07-08 12:43:42 +02:00
public static async tryConnection(config: DataBaseConfig) {
const conn = await createConnection({
name: "test",
driver: {
type: "mysql",
host: config.mysql.host,
port: 3306,
username: config.mysql.username,
password: config.mysql.password,
database: config.mysql.database
},
entities: [
UserEntity,
DirectoryEntity,
PhotoMetadataEntity,
PhotoEntity,
SharingEntity
],
autoSchemaSync: true,
logging: {
logQueries: true,
logOnlyFailedQueries: true,
logFailedQueryError: true,
logSchemaCreation: true
}
});
await conn.close();
return true;
}
2016-12-27 16:09:47 +01:00
2017-07-08 12:43:42 +02:00
public static async init(): Promise<void> {
const connection = await this.getConnection();
let userRepository = connection.getRepository(UserEntity);
let admins = await userRepository.find({role: UserRoles.Admin});
if (admins.length == 0) {
let a = new UserEntity();
a.name = "admin";
2017-07-11 09:01:59 +02:00
a.password = PasswordHelper.cryptPassword("admin");
2017-07-08 12:43:42 +02:00
a.role = UserRoles.Admin;
await userRepository.persist(a);
}
2017-07-03 19:17:49 +02:00
}
2016-12-27 16:09:47 +01:00
2017-07-03 19:17:49 +02:00
}