aboutsummaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
Diffstat (limited to 'src/server')
-rw-r--r--src/server/Message.ts29
-rw-r--r--src/server/ServerUtil.ts18
-rw-r--r--src/server/database.ts40
-rw-r--r--src/server/index.ts33
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);