-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathPlatformStatusDb.ts
125 lines (99 loc) · 3.26 KB
/
PlatformStatusDb.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
import Q = require('q');
import mongoose = require('mongoose');
import I = require('./Interfaces');
import settings = require('./config/settings');
let logger = require('./logger');
import MongoDbConnectionManager = require('./MongoDbConnectionManager');
interface IMongoDbPlatformStatus extends mongoose.Document {
motd: string;
featureTogglesString: string;
}
class PlatformStatusDb implements I.PlatformStatusDb {
private static PLATFORM_STATUS_COLLECTION_NAME: string = 'platformstatus';
private static PLATFORM_STATUS_MODEL_NAME: string = 'PlatformStatus';
private static FIND_AND_UPDATE_OPTIONS: mongoose.ModelFindOneAndUpdateOptions = { new: true };
private PlatformStatusModel: mongoose.Model<IMongoDbPlatformStatus>;
private mongoDbConnectionManager: MongoDbConnectionManager;
private platformStatusSchema = new mongoose.Schema({
motd: { type: String },
featureTogglesString: { type: String }
});
constructor(mongoDbConnectionManager: MongoDbConnectionManager) {
this.mongoDbConnectionManager = mongoDbConnectionManager;
}
public init(): void {
this.PlatformStatusModel = this.mongoDbConnectionManager.model<IMongoDbPlatformStatus>(PlatformStatusDb.PLATFORM_STATUS_MODEL_NAME, this.platformStatusSchema, PlatformStatusDb.PLATFORM_STATUS_COLLECTION_NAME);
}
public createNewPlatformStatus(motd: string, featureTogglesString: string): Q.Promise<I.PlatformStatus> {
let deferred = Q.defer<any>();
let newPlatformStatus = new this.PlatformStatusModel({
motd: motd,
featureTogglesString: featureTogglesString
});
newPlatformStatus.save((err, mongoDbPlatformStatus) => {
if (err) {
return deferred.reject(err);
}
return deferred.resolve({
motd: mongoDbPlatformStatus.motd,
featureTogglesString: mongoDbPlatformStatus.featureTogglesString
});
});
return deferred.promise;
}
public getPlatformStatus(): Q.Promise<I.PlatformStatus> {
let deferred = Q.defer<any>();
this.PlatformStatusModel.findOne(
{},
(err, mongoDbPlatformStatus) => {
if (err) {
logger.error(err);
return deferred.reject(err);
}
if (mongoDbPlatformStatus == null) {
logger.warn("mongoDbPlatformStatus is null");
return deferred.resolve(null);
}
return deferred.resolve({
motd: mongoDbPlatformStatus.motd,
featureTogglesString: mongoDbPlatformStatus.featureTogglesString
});
});
return deferred.promise;
}
public setMotd(motd: string): Q.Promise<void> {
let deferred = Q.defer<any>();
this.PlatformStatusModel.findOneAndUpdate(
{},
{
$set: { "motd": motd }
},
PlatformStatusDb.FIND_AND_UPDATE_OPTIONS,
(err, mongoDbPlatformStatus) => {
if (err) {
logger.error(err);
return deferred.reject(err);
}
return deferred.resolve(null);
});
return deferred.promise;
}
public setFeatureTogglesString(featureTogglesString: string): Q.Promise<void> {
let deferred = Q.defer<any>();
this.PlatformStatusModel.findOneAndUpdate(
{},
{
$set: { "featureTogglesString": featureTogglesString }
},
PlatformStatusDb.FIND_AND_UPDATE_OPTIONS,
(err, mongoDbPlatformStatus) => {
if (err) {
logger.error(err);
return deferred.reject(err);
}
return deferred.resolve(null);
});
return deferred.promise;
}
}
export = PlatformStatusDb;