aboutsummaryrefslogtreecommitdiff
path: root/src/server/database.ts
diff options
context:
space:
mode:
authorSam Wilkins <samwilkins333@gmail.com>2019-09-26 18:11:10 -0400
committerSam Wilkins <samwilkins333@gmail.com>2019-09-26 18:11:10 -0400
commite95387732e1fbff49ec035c3bec4b03324d814c8 (patch)
treea3392130fb8d8270f6792facc9a8557e4cb8d044 /src/server/database.ts
parent10451e596f0b2032b3186286e6176b2c0cea4e52 (diff)
beginning to read from and write to database
Diffstat (limited to 'src/server/database.ts')
-rw-r--r--src/server/database.ts34
1 files changed, 24 insertions, 10 deletions
diff --git a/src/server/database.ts b/src/server/database.ts
index ce29478ad..890ac6b32 100644
--- a/src/server/database.ts
+++ b/src/server/database.ts
@@ -231,19 +231,37 @@ export namespace Database {
const GoogleAuthentication = "GoogleAuthentication";
- const SanitizedSingletonQuery = async (query: { [key: string]: any }, collection: string) => {
+ const SanitizedCappedQuery = async (query: { [key: string]: any }, collection: string, cap: number) => {
const cursor = await Instance.query(query, undefined, collection);
- const existing = (await cursor.toArray())[0];
- if (existing) {
- delete existing._id;
- }
- return existing;
+ const results = await cursor.toArray();
+ const slice = results.slice(0, Math.min(cap, results.length));
+ return slice.map(result => {
+ delete result._id;
+ return result;
+ });
+ };
+
+ const SanitizedSingletonQuery = async (query: { [key: string]: any }, collection: string) => {
+ const results = await SanitizedCappedQuery(query, collection, 1);
+ return results.length ? results[0] : undefined;
};
export const QueryUploadHistory = async (contentSize: number): Promise<Opt<DashUploadUtils.UploadInformation>> => {
return SanitizedSingletonQuery({ contentSize }, AuxiliaryCollections.GooglePhotosUploadHistory);
};
+ export namespace GoogleAuthenticationToken {
+
+ export const Fetch = async (userId: string) => {
+ return SanitizedSingletonQuery({ userId }, GoogleAuthentication);
+ };
+
+ export const Write = async (userId: string, token: any) => {
+ return Instance.insert({ userId, ...token }, GoogleAuthentication);
+ };
+
+ }
+
export const LogUpload = async (information: DashUploadUtils.UploadInformation) => {
const bundle = {
_id: Utils.GenerateDeterministicGuid(String(information.contentSize!)),
@@ -258,10 +276,6 @@ export namespace Database {
return Promise.all(pendingDeletions);
};
- export const FetchGoogleAuthenticationToken = async (userId: string) => {
- return SanitizedSingletonQuery({ userId }, GoogleAuthentication);
- };
-
}
} \ No newline at end of file