@skroz/profile-api 1.0.30 → 1.0.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/entities/TypeOrmSettingsEntity.d.ts +6 -0
- package/dist/entities/TypeOrmSettingsEntity.js +29 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/repositories/TypeOrmSettingsRepository.d.ts +8 -0
- package/dist/repositories/TypeOrmSettingsRepository.js +77 -0
- package/package.json +2 -2
- package/src/entities/TypeOrmSettingsEntity.ts +13 -0
- package/src/index.ts +2 -0
- package/src/repositories/TypeOrmSettingsRepository.ts +67 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.TypeOrmSettingsEntity = void 0;
|
|
13
|
+
const typeorm_1 = require("typeorm");
|
|
14
|
+
const TypeOrmBaseEntity_1 = require("./TypeOrmBaseEntity");
|
|
15
|
+
class TypeOrmSettingsEntity extends TypeOrmBaseEntity_1.TypeOrmBaseEntity {
|
|
16
|
+
}
|
|
17
|
+
exports.TypeOrmSettingsEntity = TypeOrmSettingsEntity;
|
|
18
|
+
__decorate([
|
|
19
|
+
(0, typeorm_1.Column)(),
|
|
20
|
+
__metadata("design:type", String)
|
|
21
|
+
], TypeOrmSettingsEntity.prototype, "key", void 0);
|
|
22
|
+
__decorate([
|
|
23
|
+
(0, typeorm_1.Column)(),
|
|
24
|
+
__metadata("design:type", String)
|
|
25
|
+
], TypeOrmSettingsEntity.prototype, "type", void 0);
|
|
26
|
+
__decorate([
|
|
27
|
+
(0, typeorm_1.Column)(),
|
|
28
|
+
__metadata("design:type", String)
|
|
29
|
+
], TypeOrmSettingsEntity.prototype, "value", void 0);
|
package/dist/index.d.ts
CHANGED
|
@@ -2,6 +2,8 @@ export * from './types';
|
|
|
2
2
|
export * from './adapters/TypeOrmProfileAdapter';
|
|
3
3
|
export * from './entities/TypeOrmBaseEntity';
|
|
4
4
|
export * from './entities/TypeOrmBaseUser';
|
|
5
|
+
export * from './entities/TypeOrmSettingsEntity';
|
|
6
|
+
export * from './repositories/TypeOrmSettingsRepository';
|
|
5
7
|
export * from './services/ProfileAuthService';
|
|
6
8
|
export * from './services/ProfileEmailService';
|
|
7
9
|
export * from './dto';
|
package/dist/index.js
CHANGED
|
@@ -22,6 +22,8 @@ __exportStar(require("./types"), exports);
|
|
|
22
22
|
__exportStar(require("./adapters/TypeOrmProfileAdapter"), exports);
|
|
23
23
|
__exportStar(require("./entities/TypeOrmBaseEntity"), exports);
|
|
24
24
|
__exportStar(require("./entities/TypeOrmBaseUser"), exports);
|
|
25
|
+
__exportStar(require("./entities/TypeOrmSettingsEntity"), exports);
|
|
26
|
+
__exportStar(require("./repositories/TypeOrmSettingsRepository"), exports);
|
|
25
27
|
__exportStar(require("./services/ProfileAuthService"), exports);
|
|
26
28
|
__exportStar(require("./services/ProfileEmailService"), exports);
|
|
27
29
|
__exportStar(require("./dto"), exports);
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Repository } from 'typeorm';
|
|
2
|
+
import { TypeOrmSettingsEntity } from '../entities/TypeOrmSettingsEntity';
|
|
3
|
+
export declare abstract class TypeOrmSettingsRepository<TEntity extends TypeOrmSettingsEntity, TPayload extends object> extends Repository<TEntity> {
|
|
4
|
+
private stringToBoolean;
|
|
5
|
+
private getValue;
|
|
6
|
+
get(): Promise<TPayload>;
|
|
7
|
+
set(data: Partial<TPayload>): Promise<TPayload>;
|
|
8
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
9
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
10
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
11
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
12
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
13
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
14
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
15
|
+
});
|
|
16
|
+
};
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.TypeOrmSettingsRepository = void 0;
|
|
19
|
+
const typeorm_1 = require("typeorm");
|
|
20
|
+
let TypeOrmSettingsRepository = class TypeOrmSettingsRepository extends typeorm_1.Repository {
|
|
21
|
+
stringToBoolean(string) {
|
|
22
|
+
switch (string.toLowerCase().trim()) {
|
|
23
|
+
case 'true':
|
|
24
|
+
case 'yes':
|
|
25
|
+
case '1':
|
|
26
|
+
return true;
|
|
27
|
+
case 'false':
|
|
28
|
+
case 'no':
|
|
29
|
+
case '0':
|
|
30
|
+
return false;
|
|
31
|
+
default:
|
|
32
|
+
return Boolean(string);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
getValue(setting) {
|
|
36
|
+
if (setting.type === 'string')
|
|
37
|
+
return setting.value;
|
|
38
|
+
if (setting.type === 'number')
|
|
39
|
+
return Number(setting.value);
|
|
40
|
+
if (setting.type === 'boolean')
|
|
41
|
+
return this.stringToBoolean(setting.value);
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
get() {
|
|
45
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
46
|
+
const settings = yield this.find();
|
|
47
|
+
return settings.reduce((acc, setting) => (Object.assign(Object.assign({}, acc), { [setting.key]: this.getValue(setting) })), {});
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
set(data) {
|
|
51
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
52
|
+
const keys = Object.keys(data).filter((key) => data[key] !== undefined);
|
|
53
|
+
if (keys.length === 0)
|
|
54
|
+
return this.get();
|
|
55
|
+
const condition = { key: (0, typeorm_1.In)(keys) };
|
|
56
|
+
yield this.delete(condition);
|
|
57
|
+
const settings = keys.reduce((acc, key) => {
|
|
58
|
+
const value = data[key];
|
|
59
|
+
if (value === null)
|
|
60
|
+
return acc;
|
|
61
|
+
const setting = {
|
|
62
|
+
key,
|
|
63
|
+
type: typeof value,
|
|
64
|
+
value: String(value),
|
|
65
|
+
};
|
|
66
|
+
return [...acc, setting];
|
|
67
|
+
}, []);
|
|
68
|
+
if (settings.length > 0)
|
|
69
|
+
yield this.save(settings);
|
|
70
|
+
return this.get();
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
exports.TypeOrmSettingsRepository = TypeOrmSettingsRepository;
|
|
75
|
+
exports.TypeOrmSettingsRepository = TypeOrmSettingsRepository = __decorate([
|
|
76
|
+
(0, typeorm_1.EntityRepository)()
|
|
77
|
+
], TypeOrmSettingsRepository);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skroz/profile-api",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.32",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"repository": "git@gitlab.com:skroz/libs/utils.git",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -45,5 +45,5 @@
|
|
|
45
45
|
"type-graphql": "^1.1.1",
|
|
46
46
|
"typeorm": "^0.2.45"
|
|
47
47
|
},
|
|
48
|
-
"gitHead": "
|
|
48
|
+
"gitHead": "6da83a7577124250dafd94bc26ce3fbb29a8953f"
|
|
49
49
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Column } from 'typeorm';
|
|
2
|
+
import { TypeOrmBaseEntity } from './TypeOrmBaseEntity';
|
|
3
|
+
|
|
4
|
+
export abstract class TypeOrmSettingsEntity extends TypeOrmBaseEntity {
|
|
5
|
+
@Column()
|
|
6
|
+
public key!: string;
|
|
7
|
+
|
|
8
|
+
@Column()
|
|
9
|
+
public type!: string;
|
|
10
|
+
|
|
11
|
+
@Column()
|
|
12
|
+
public value!: string;
|
|
13
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -2,6 +2,8 @@ export * from './types';
|
|
|
2
2
|
export * from './adapters/TypeOrmProfileAdapter';
|
|
3
3
|
export * from './entities/TypeOrmBaseEntity';
|
|
4
4
|
export * from './entities/TypeOrmBaseUser';
|
|
5
|
+
export * from './entities/TypeOrmSettingsEntity';
|
|
6
|
+
export * from './repositories/TypeOrmSettingsRepository';
|
|
5
7
|
export * from './services/ProfileAuthService';
|
|
6
8
|
export * from './services/ProfileEmailService';
|
|
7
9
|
export * from './dto';
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { DeepPartial, EntityRepository, FindConditions, In, Repository } from 'typeorm';
|
|
2
|
+
import { TypeOrmSettingsEntity } from '../entities/TypeOrmSettingsEntity';
|
|
3
|
+
|
|
4
|
+
@EntityRepository()
|
|
5
|
+
export abstract class TypeOrmSettingsRepository<
|
|
6
|
+
TEntity extends TypeOrmSettingsEntity,
|
|
7
|
+
TPayload extends object
|
|
8
|
+
> extends Repository<TEntity> {
|
|
9
|
+
private stringToBoolean(string: string): boolean {
|
|
10
|
+
switch (string.toLowerCase().trim()) {
|
|
11
|
+
case 'true':
|
|
12
|
+
case 'yes':
|
|
13
|
+
case '1':
|
|
14
|
+
return true;
|
|
15
|
+
case 'false':
|
|
16
|
+
case 'no':
|
|
17
|
+
case '0':
|
|
18
|
+
return false;
|
|
19
|
+
default:
|
|
20
|
+
return Boolean(string);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
private getValue(setting: TypeOrmSettingsEntity): string | number | boolean | null {
|
|
25
|
+
if (setting.type === 'string') return setting.value;
|
|
26
|
+
if (setting.type === 'number') return Number(setting.value);
|
|
27
|
+
if (setting.type === 'boolean') return this.stringToBoolean(setting.value);
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
public async get(): Promise<TPayload> {
|
|
32
|
+
const settings = await this.find();
|
|
33
|
+
return settings.reduce<TPayload>(
|
|
34
|
+
(acc, setting) => ({
|
|
35
|
+
...acc,
|
|
36
|
+
[setting.key]: this.getValue(setting),
|
|
37
|
+
}),
|
|
38
|
+
{} as TPayload
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
public async set(data: Partial<TPayload>): Promise<TPayload> {
|
|
43
|
+
const keys = (Object.keys(data) as Array<keyof TPayload>).filter(
|
|
44
|
+
(key) => data[key] !== undefined
|
|
45
|
+
) as string[];
|
|
46
|
+
|
|
47
|
+
if (keys.length === 0) return this.get();
|
|
48
|
+
|
|
49
|
+
const condition: FindConditions<TypeOrmSettingsEntity> = { key: In(keys) };
|
|
50
|
+
await this.delete(condition as FindConditions<TEntity>);
|
|
51
|
+
|
|
52
|
+
const settings = keys.reduce<DeepPartial<TEntity>[]>((acc, key) => {
|
|
53
|
+
const value = data[key as keyof TPayload];
|
|
54
|
+
if (value === null) return acc;
|
|
55
|
+
|
|
56
|
+
const setting: DeepPartial<TEntity> = {
|
|
57
|
+
key,
|
|
58
|
+
type: typeof value,
|
|
59
|
+
value: String(value),
|
|
60
|
+
} as DeepPartial<TEntity>;
|
|
61
|
+
return [...acc, setting];
|
|
62
|
+
}, []);
|
|
63
|
+
|
|
64
|
+
if (settings.length > 0) await this.save(settings);
|
|
65
|
+
return this.get();
|
|
66
|
+
}
|
|
67
|
+
}
|