diff options
Diffstat (limited to 'src/server')
-rw-r--r-- | src/server/Message.ts | 29 | ||||
-rw-r--r-- | src/server/ServerUtil.ts | 18 | ||||
-rw-r--r-- | src/server/database.ts | 40 | ||||
-rw-r--r-- | src/server/index.ts | 33 |
4 files changed, 62 insertions, 58 deletions
diff --git a/src/server/Message.ts b/src/server/Message.ts index 0391b6671..f63168223 100644 --- a/src/server/Message.ts +++ b/src/server/Message.ts @@ -52,9 +52,9 @@ export enum Types { export class DocumentTransfer implements Transferable { readonly type = Types.Document - _id: ObjectId; + _id: string - constructor(readonly obj: { type: Types, data: [string, string][], _id: ObjectId }) { + constructor(readonly obj: { type: Types, data: [string, string][], _id: string }) { this._id = obj._id } } @@ -62,56 +62,56 @@ export class DocumentTransfer implements Transferable { export class ImageTransfer implements Transferable { readonly type = Types.Image - constructor(readonly _id: ObjectId) { } + constructor(readonly _id: string) { } } export class KeyTransfer implements Transferable { name: string - readonly _id: ObjectId + readonly _id: string readonly type = Types.Key constructor(i: string, n: string) { this.name = n - this._id = new ObjectId(i) + this._id = i } } export class ListTransfer implements Transferable { type = Types.List; - constructor(readonly _id: ObjectId) { } + constructor(readonly _id: string) { } } export class NumberTransfer implements Transferable { readonly type = Types.Number - constructor(readonly value: number, readonly _id: ObjectId) { } + constructor(readonly value: number, readonly _id: string) { } } export class TextTransfer implements Transferable { value: string - readonly _id: ObjectId + readonly _id: string readonly type = Types.Text constructor(t: string, i: string) { this.value = t - this._id = new ObjectId(i) + this._id = i } } export class RichTextTransfer implements Transferable { value: string - readonly _id: ObjectId + readonly _id: string readonly type = Types.Text constructor(t: string, i: string) { this.value = t - this._id = new ObjectId(i) + this._id = i } } export interface Transferable { - readonly _id: ObjectId + readonly _id: string readonly type: Types } @@ -119,6 +119,7 @@ export namespace MessageStore { export const Foo = new Message<string>("Foo"); export const Bar = new Message<string>("Bar"); export const AddDocument = new Message<DocumentTransfer>("Add Document"); - export const SetField = new Message<{ _id: ObjectId, data: any, type: Types }>("Set Field") - export const GetField = new Message<GetFieldArgs>("Get Field") + export const SetField = new Message<{ _id: string, data: any, type: Types }>("Set Field") + export const GetField = new Message<string>("Get Field") + export const GetDocument = new Message<string>("Get Document"); }
\ No newline at end of file diff --git a/src/server/ServerUtil.ts b/src/server/ServerUtil.ts index 6757615fb..d1de71dbe 100644 --- a/src/server/ServerUtil.ts +++ b/src/server/ServerUtil.ts @@ -12,9 +12,10 @@ import { Utils } from '../Utils'; export class ServerUtils { public static FromJson(json: string): Field { - let obj = JSON.parse(json) + let obj = JSON.parse(JSON.stringify(json)) + console.log(obj) let data: any = obj.data - let id: string = obj.id + let id: string = obj._id let type: Types = obj.type if (!(data && id && type != undefined)) { @@ -40,19 +41,8 @@ export class ServerUtils { let fields: [string, string][] = data as [string, string][] fields.forEach(element => { doc._proxies.set(element[0], element[1]); - let keyId: string = element[0] - let valueId: string = element[1] - Server.GetField(keyId, (key: Field) => { - if (key instanceof Key) { - Server.GetField(valueId, (field: Field) => { - doc.Set(key as Key, field) - }) - } - else { - console.log("how did you get a key that isnt a key wtf") - } - }) }); + console.log(doc._proxies) return doc } return new TextField(data, id) diff --git a/src/server/database.ts b/src/server/database.ts index 72ddbc82c..5844a88a2 100644 --- a/src/server/database.ts +++ b/src/server/database.ts @@ -9,8 +9,8 @@ export class Database { private MongoClient = mongodb.MongoClient; private url = 'mongodb://localhost:27017/Dash'; - public update(id: mongodb.ObjectID, value: any) { - this.MongoClient.connect(this.url, (err, db) => { + public update(id: string, value: any) { + this.MongoClient.connect(this.url, { bufferMaxEntries: 1 }, (err, db) => { let collection = db.db().collection('documents'); collection.update({ _id: id }, { $set: value }); db.close(); @@ -18,7 +18,7 @@ export class Database { } public delete(id: string) { - this.MongoClient.connect(this.url, (err, db) => { + this.MongoClient.connect(this.url, { bufferMaxEntries: 1 }, (err, db) => { let collection = db.db().collection('documents'); collection.remove({ _id: id }); db.close(); @@ -26,32 +26,40 @@ export class Database { } public insert(kvpairs: any) { - this.MongoClient.connect(this.url, (err, db) => { + this.MongoClient.connect(this.url, { bufferMaxEntries: 1 }, (err, db) => { + // console.log(kvpairs) let collection = db.db().collection('documents'); - collection.insertOne(kvpairs, () => { }); + collection.insertOne(kvpairs, (err: any, res: any) => { + if (err) { + // console.log(err) + return + } + // console.log(kvpairs) + // console.log("1 document inserted") + }); db.close(); }); } - public getDocument(id: mongodb.ObjectID): string | undefined { + public getDocument(id: string, fn: (res: any) => void) { var result: JSON; - this.MongoClient.connect(this.url, (err, db) => { + this.MongoClient.connect(this.url, { + bufferMaxEntries: 1 + }, (err, db) => { if (err) { console.log(err) return undefined } let collection = db.db().collection('documents'); - collection.findOne({ _id: Utils.GenerateDeterministicGuid(id.toHexString()) }, (err: any, res: any) => result = res) - console.log(result) + collection.findOne({ _id: id }, (err: any, res: any) => { + result = res + if (!result) { + fn(undefined) + } + fn(result) + }) db.close(); - if (!result) { - console.log("not found") - return undefined - } - console.log("found") - return result; }); - return undefined } public print() { diff --git a/src/server/index.ts b/src/server/index.ts index 98d897d2f..b256b6a82 100644 --- a/src/server/index.ts +++ b/src/server/index.ts @@ -13,6 +13,7 @@ import { FIELD_ID, Field } from '../fields/Field'; import { Database } from './database'; import { ServerUtils } from './ServerUtil'; import { ObjectID } from 'mongodb'; +import { Document } from '../fields/Document'; const config = require('../../webpack.config') const compiler = webpack(config) const port = 1050; // default port to listen @@ -65,22 +66,26 @@ function addDocument(document: Document) { } -function setField(newValue: Transferable) { - console.log(newValue._id) - if (Database.Instance.getDocument(newValue._id)) { - Database.Instance.update(newValue._id, newValue) - } - else { - Database.Instance.insert(newValue) - } +function getField([id, callback]: [string, (result: any) => void]) { + Database.Instance.getDocument(id, (result: any) => { + if (result) { + callback(result) + } + else { + callback(undefined) + } + }) } -function getField([fieldRequest, callback]: [GetFieldArgs, (field: Field) => void]) { - let fieldid: string = fieldRequest.field - let result: string | undefined = Database.Instance.getDocument(new ObjectID(fieldid)) - if (result) { - let fromJson: Field = ServerUtils.FromJson(result) - } +function setField(newValue: Transferable) { + Database.Instance.getDocument(newValue._id, (res: any) => { + if (res) { + Database.Instance.update(newValue._id, newValue) + } + else { + Database.Instance.insert(newValue) + } + }) } server.listen(serverPort); |