aboutsummaryrefslogtreecommitdiff
path: root/src/fields/RefField.ts
diff options
context:
space:
mode:
authorAndy Rickert <andrew_rickert@brown.edu>2020-06-03 16:40:09 -0400
committerAndy Rickert <andrew_rickert@brown.edu>2020-06-03 16:40:09 -0400
commit954948ddd511578af4ca2c50c960765a5a7bc637 (patch)
tree16fafd254a5db95d5c39838d4313d7ddf59753af /src/fields/RefField.ts
parent6d8d3c00587c43ae61392db4fe6915ee492c2e4a (diff)
parent9588e56079f7e4ab98da1849f44996656649bc06 (diff)
merge
Diffstat (limited to 'src/fields/RefField.ts')
-rw-r--r--src/fields/RefField.ts21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/fields/RefField.ts b/src/fields/RefField.ts
new file mode 100644
index 000000000..b6ef69750
--- /dev/null
+++ b/src/fields/RefField.ts
@@ -0,0 +1,21 @@
+import { serializable, primitive, alias } from "serializr";
+import { Utils } from "../Utils";
+import { Id, HandleUpdate, ToScriptString, ToString } from "./FieldSymbols";
+import { afterDocDeserialize } from "../client/util/SerializationHelper";
+
+export type FieldId = string;
+export abstract class RefField {
+ @serializable(alias("id", primitive({ afterDeserialize: afterDocDeserialize })))
+ private __id: FieldId;
+ readonly [Id]: FieldId;
+
+ constructor(id?: FieldId) {
+ this.__id = id || Utils.GenerateGuid();
+ this[Id] = this.__id;
+ }
+
+ protected [HandleUpdate]?(diff: any): void | Promise<void>;
+
+ abstract [ToScriptString](): string;
+ abstract [ToString](): string;
+}