diff --git a/src/connection.ts b/src/connection.ts index 62c8869..e747caf 100644 --- a/src/connection.ts +++ b/src/connection.ts @@ -117,7 +117,7 @@ export class ConnectionManager { if (!handler) throw new Error("Invalid Request!"); - let query = db.getQuery(path || [], session.sessionid, isDoc ? "document" : "collection"); + let query = db.getQuery(path || [], session.id, isDoc ? "document" : "collection"); let res = await handler({ id, data, @@ -156,7 +156,7 @@ export class ConnectionManager { }) socket.on("close", () => { - Logging.log(`${session.sessionid} has disconnected!`); + Logging.log(`${session.id} has disconnected!`); Logging.debug("Clearing stored:", stored); stored.forEach(query => (query as DocumentQuery | CollectionQuery).unsubscribe()); stored.clear(); diff --git a/src/database/query.ts b/src/database/query.ts index fa568e6..09be778 100644 --- a/src/database/query.ts +++ b/src/database/query.ts @@ -3,6 +3,7 @@ import { resNull } from "../storage"; import nanoid = require("nanoid/generate"); import Logging from "@hibas123/nodelogging"; import * as MSGPack from "what-the-pack"; +import Session from "./session"; export const MP = MSGPack.initialize(2 ** 20); @@ -23,7 +24,7 @@ export class Query { return path.every(e => (e.match(/[^a-zA-Z0-9_\-\<\>]/g) || []).length === 0); } - constructor(protected database: Database, protected path: string[], protected sender: string) { + constructor(protected database: Database, protected path: string[], protected session: Session) { if (path.length > 10) { throw new Error("Path is to long. Path is only allowed to be 10 Layers deep!"); } @@ -73,7 +74,7 @@ export class Query { type, document, data, - sender: this.sender + sender: this.session.id } let s = this.database.changes.get(this.getKey(collection, document)) @@ -86,8 +87,8 @@ export class Query { } - protected static getConstructorParams(query: Query): [Database, string[], string] { - return [query.database, query.path, query.sender]; + protected static getConstructorParams(query: Query): [Database, string[], Session] { + return [query.database, query.path, query.session]; } } @@ -98,8 +99,8 @@ interface UpdateData { } } export class DocumentQuery extends Query { - constructor(database: Database, path: string[], sender: string) { - super(database, path, sender); + constructor(database: Database, path: string[], session: Session) { + super(database, path, session); this.onChange = this.onChange.bind(this); } @@ -308,8 +309,8 @@ interface DocRes { } export class CollectionQuery extends Query { - constructor(database: Database, path: string[], sender: string) { - super(database, path, sender); + constructor(database: Database, path: string[], session: Session) { + super(database, path, session); this.onChange = this.onChange.bind(this); } @@ -319,7 +320,7 @@ export class CollectionQuery extends Query { public async add(value: any) { let id = nanoid(ALPHABET, 32); - let q = new DocumentQuery(this.database, [...this.path, id], this.sender); + let q = new DocumentQuery(this.database, [...this.path, id], this.session); await q.set(value, {}); return id; } diff --git a/src/database/session.ts b/src/database/session.ts index bc6811c..2ddb016 100644 --- a/src/database/session.ts +++ b/src/database/session.ts @@ -1,6 +1,6 @@ export default class Session { constructor(private _sessionid: string) { } - get sessionid() { + get id() { return this._sessionid; } root: boolean = false;