@snowtop/ent 0.2.0-alpha.8 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/core/base.d.ts CHANGED
@@ -86,6 +86,7 @@ interface JoinOptions<T2 extends Data = Data, K2 = keyof T2> {
86
86
  tableName: string;
87
87
  alias?: string;
88
88
  clause: clause.Clause<T2, K2>;
89
+ type?: "inner" | "outer" | "left" | "right";
89
90
  }
90
91
  export interface QueryDataOptions<T extends Data = Data, K = keyof T> {
91
92
  distinct?: boolean;
@@ -36,7 +36,24 @@ function getJoinInfo(join, clauseIdx = 1) {
36
36
  ? `${join.tableName} ${join.alias}`
37
37
  : join.tableName;
38
38
  valuesUsed += join.clause.values().length;
39
- return `JOIN ${joinTable} ON ${join.clause.clause(clauseIdx)}`;
39
+ let joinType;
40
+ switch (join.type) {
41
+ case "left":
42
+ joinType = "LEFT JOIN";
43
+ break;
44
+ case "right":
45
+ joinType = "RIGHT JOIN";
46
+ break;
47
+ case "outer":
48
+ joinType = "FULL OUTER JOIN";
49
+ break;
50
+ case "inner":
51
+ joinType = "INNER JOIN";
52
+ break;
53
+ default:
54
+ joinType = "JOIN";
55
+ }
56
+ return `${joinType} ${joinTable} ON ${join.clause.clause(clauseIdx)}`;
40
57
  })
41
58
  .join(" ");
42
59
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@snowtop/ent",
3
- "version": "0.2.0-alpha.8",
3
+ "version": "0.2.0",
4
4
  "description": "snowtop ent framework",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -36,8 +36,7 @@ class StructField extends field_1.BaseField {
36
36
  throw new Error("valid was not called");
37
37
  }
38
38
  let ret = {};
39
- for (const k in this.options.fields) {
40
- const field = this.options.fields[k];
39
+ const processField = (k, field) => {
41
40
  // check two values
42
41
  // store in dbKey format
43
42
  // check both fieldName and dbKey and store in dbKey for
@@ -52,7 +51,7 @@ class StructField extends field_1.BaseField {
52
51
  val = obj[dbKey];
53
52
  }
54
53
  if (val === undefined) {
55
- continue;
54
+ return;
56
55
  }
57
56
  if (field.format) {
58
57
  // indicate nested so this isn't JSON stringified
@@ -61,6 +60,16 @@ class StructField extends field_1.BaseField {
61
60
  else {
62
61
  ret[dbKey] = val;
63
62
  }
63
+ };
64
+ for (const k in this.options.fields) {
65
+ const field = this.options.fields[k];
66
+ processField(k, field);
67
+ if (field.getDerivedFields) {
68
+ const derivedFields = field.getDerivedFields(k);
69
+ for (const k in derivedFields) {
70
+ processField(k, derivedFields[k]);
71
+ }
72
+ }
64
73
  }
65
74
  // don't json.stringify if nested or list
66
75
  if (nested) {
@@ -114,11 +123,7 @@ class StructField extends field_1.BaseField {
114
123
  return false;
115
124
  }
116
125
  let promises = [];
117
- // TODO probably need to support optional fields...
118
- let valid = true;
119
- for (const k in this.options.fields) {
120
- const field = this.options.fields[k];
121
- let dbKey = (0, schema_1.getStorageKey)(field, k);
126
+ const processField = (k, dbKey, field) => {
122
127
  let fieldName = (0, names_1.toFieldName)(k);
123
128
  let val = obj[fieldName];
124
129
  let uniqueKeyField = false;
@@ -145,15 +150,34 @@ class StructField extends field_1.BaseField {
145
150
  if (val === undefined || val === null) {
146
151
  // nullable, nothing to do here
147
152
  if (field.nullable) {
148
- continue;
153
+ return;
149
154
  }
150
155
  valid = false;
151
- break;
156
+ return false;
152
157
  }
153
158
  if (!field.valid) {
154
- continue;
159
+ return;
155
160
  }
156
161
  promises.push(field.valid(val));
162
+ };
163
+ // TODO probably need to support optional fields...
164
+ let valid = true;
165
+ for (const k in this.options.fields) {
166
+ const field = this.options.fields[k];
167
+ let dbKey = (0, schema_1.getStorageKey)(field, k);
168
+ if (processField(k, dbKey, field) === false) {
169
+ valid = false;
170
+ }
171
+ if (field.getDerivedFields) {
172
+ const derivedFields = field.getDerivedFields(k);
173
+ for (const k in derivedFields) {
174
+ const derivedField = derivedFields[k];
175
+ let dbKey = (0, schema_1.getStorageKey)(derivedField, k);
176
+ if (processField(k, dbKey, derivedField) === false) {
177
+ valid = false;
178
+ }
179
+ }
180
+ }
157
181
  }
158
182
  if (!valid) {
159
183
  return valid;