imean-cassandra-orm 2.6.1 → 2.7.1

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/dist/mod.cjs CHANGED
@@ -66,21 +66,21 @@ function getNewFields(schemaFields, tableMetadata2) {
66
66
  );
67
67
  }
68
68
  function getDeletedFields(schemaFields, tableMetadata2) {
69
- return tableMetadata2.filter((t) => !schemaFields.some(
70
- (field) => field.toLowerCase() === t.column_name.toLowerCase()
71
- )).map((t) => t.column_name);
69
+ return tableMetadata2.filter(
70
+ (t) => !schemaFields.some(
71
+ (field) => field.toLowerCase() === t.column_name.toLowerCase()
72
+ )
73
+ ).map((t) => t.column_name);
72
74
  }
73
75
  function getUpdatedFields(schemaFields, tableMetadata2, shape) {
74
76
  return schemaFields.filter(
75
- (field) => tableMetadata2.some(
76
- (t) => {
77
- const dbFieldName = t.column_name;
78
- const schemaFieldName = field;
79
- const dbType = t.type;
80
- const schemaType = convertZodToCassandraType(shape[field]);
81
- return dbFieldName.toLowerCase() === schemaFieldName.toLowerCase() && dbType !== schemaType;
82
- }
83
- )
77
+ (field) => tableMetadata2.some((t) => {
78
+ const dbFieldName = t.column_name;
79
+ const schemaFieldName = field;
80
+ const dbType = t.type;
81
+ const schemaType = convertZodToCassandraType(shape[field]);
82
+ return dbFieldName.toLowerCase() === schemaFieldName.toLowerCase() && dbType !== schemaType;
83
+ })
84
84
  );
85
85
  }
86
86
  function hasKeyFieldChanged(schema, newFields, deletedFields) {
@@ -821,8 +821,6 @@ function buildInsertParams(data, fieldConfigs) {
821
821
  const value = data[fieldName];
822
822
  if (value !== void 0) {
823
823
  params.push(convertValueToCassandra(value, config));
824
- } else if (!config.flags.optional) {
825
- throw new Error(`\u5FC5\u586B\u5B57\u6BB5 "${fieldName}" \u672A\u63D0\u4F9B`);
826
824
  } else {
827
825
  params.push(null);
828
826
  }
@@ -1015,8 +1013,8 @@ function convertValueToCassandra(value, config) {
1015
1013
  }
1016
1014
  }
1017
1015
  function convertValueFromCassandra(value, config, zodSchema, filedName) {
1018
- if (value === null || value === void 0) {
1019
- return value;
1016
+ if (value === null) {
1017
+ return config.flags.optional ? null : void 0;
1020
1018
  }
1021
1019
  switch (config.type) {
1022
1020
  case "timestamp":
@@ -1032,15 +1030,13 @@ function convertValueFromCassandra(value, config, zodSchema, filedName) {
1032
1030
  case "blob":
1033
1031
  return value instanceof Uint8Array ? value : new Uint8Array(value);
1034
1032
  case "text":
1035
- if (config.type !== "text") {
1036
- console.log("value", value);
1033
+ const zodTypeName = zodSchema?.shape[filedName]?._def?.typeName;
1034
+ if (config.type !== "text" || zodTypeName === "ZodAny" || zodTypeName === "ZodObject") {
1037
1035
  try {
1038
1036
  return JSON.parse(value);
1039
- } catch {
1037
+ } catch (error) {
1040
1038
  return value;
1041
1039
  }
1042
- } else if (typeof value === "string" && zodSchema?.shape[filedName]?._def?.typeName === "ZodAny") {
1043
- return JSON.parse(value);
1044
1040
  }
1045
1041
  return value;
1046
1042
  default:
@@ -1603,37 +1599,13 @@ var Types = {
1603
1599
  double: zod.z.number,
1604
1600
  enum: zod.z.enum,
1605
1601
  object: zod.z.object,
1606
- anyObject: () => createCassandraType(zod.z.any(), "text"),
1602
+ json: () => createCassandraType(zod.z.any(), "text"),
1607
1603
  float: () => createCassandraType(
1608
1604
  zod.z.number().transform((val) => parseFloat(val.toString())),
1609
1605
  "float"
1610
1606
  ),
1611
1607
  int: () => createCassandraType(zod.z.number().int(), "int"),
1612
1608
  bigint: () => createCassandraType(zod.z.bigint(), "bigint"),
1613
- smallint: () => createCassandraType(
1614
- zod.z.number().int().refine((val) => val >= -32768 && val <= 32767, {
1615
- message: "Value must be between -32768 and 32767"
1616
- }),
1617
- "smallint"
1618
- ),
1619
- tinyint: () => createCassandraType(
1620
- zod.z.number().int().refine((val) => val >= -128 && val <= 127, {
1621
- message: "Value must be between -128 and 127"
1622
- }),
1623
- "tinyint"
1624
- ),
1625
- varint: () => createCassandraType(
1626
- zod.z.number().int().transform((val) => BigInt(val)),
1627
- "varint"
1628
- ),
1629
- // 字符串类型
1630
- varchar: (maxLength) => createCassandraType(zod.z.string().max(maxLength || 65535), "varchar"),
1631
- ascii: () => createCassandraType(
1632
- zod.z.string().refine((val) => /^[\x00-\x7F]*$/.test(val), {
1633
- message: "String must contain only ASCII characters"
1634
- }),
1635
- "ascii"
1636
- ),
1637
1609
  // 时间类型
1638
1610
  timestamp: () => createCassandraType(zod.z.date(), "timestamp"),
1639
1611
  time: () => createCassandraType(zod.z.date(), "time"),
@@ -1650,12 +1622,6 @@ var Types = {
1650
1622
  set: (elementType) => createCassandraType(
1651
1623
  zod.z.set(elementType),
1652
1624
  `set<${convertZodToCassandraType(elementType)}>`
1653
- ),
1654
- map: (keyType, valueType) => createCassandraType(
1655
- zod.z.record(keyType, valueType),
1656
- `map<${convertZodToCassandraType(keyType)}, ${convertZodToCassandraType(
1657
- valueType
1658
- )}>`
1659
1625
  )
1660
1626
  };
1661
1627
 
package/dist/mod.d.cts CHANGED
@@ -132,15 +132,10 @@ declare const Types: {
132
132
  <U extends string, T extends [U, ...U[]]>(values: T, params?: z.RawCreateParams): z.ZodEnum<T>;
133
133
  };
134
134
  object: <T extends z.ZodRawShape>(shape: T, params?: z.RawCreateParams) => z.ZodObject<T, "strip", z.ZodTypeAny, z.objectOutputType<T, z.ZodTypeAny, "strip">, z.objectInputType<T, z.ZodTypeAny, "strip">>;
135
- anyObject: () => z.ZodAny & CassandraTypeMarker;
135
+ json: () => z.ZodAny & CassandraTypeMarker;
136
136
  float: () => z.ZodEffects<z.ZodNumber, number, number> & CassandraTypeMarker;
137
137
  int: () => z.ZodNumber & CassandraTypeMarker;
138
138
  bigint: () => z.ZodBigInt & CassandraTypeMarker;
139
- smallint: () => z.ZodEffects<z.ZodNumber, number, number> & CassandraTypeMarker;
140
- tinyint: () => z.ZodEffects<z.ZodNumber, number, number> & CassandraTypeMarker;
141
- varint: () => z.ZodEffects<z.ZodNumber, bigint, number> & CassandraTypeMarker;
142
- varchar: (maxLength?: number) => z.ZodString & CassandraTypeMarker;
143
- ascii: () => z.ZodEffects<z.ZodString, string, string> & CassandraTypeMarker;
144
139
  timestamp: () => z.ZodDate & CassandraTypeMarker;
145
140
  time: () => z.ZodDate & CassandraTypeMarker;
146
141
  date: () => z.ZodDate & CassandraTypeMarker;
@@ -148,7 +143,6 @@ declare const Types: {
148
143
  blob: () => z.ZodType<Uint8Array<ArrayBuffer>, z.ZodTypeDef, Uint8Array<ArrayBuffer>> & CassandraTypeMarker;
149
144
  list: <T extends z.ZodTypeAny>(elementType: T) => z.ZodArray<T, "many"> & CassandraTypeMarker;
150
145
  set: <T extends z.ZodTypeAny>(elementType: T) => z.ZodSet<T> & CassandraTypeMarker;
151
- map: <K extends z.ZodTypeAny, V extends z.ZodTypeAny>(keyType: K, valueType: V) => z.ZodRecord<K, V> & CassandraTypeMarker;
152
146
  };
153
147
 
154
148
  type FieldFlags = {
package/dist/mod.d.ts CHANGED
@@ -132,15 +132,10 @@ declare const Types: {
132
132
  <U extends string, T extends [U, ...U[]]>(values: T, params?: z.RawCreateParams): z.ZodEnum<T>;
133
133
  };
134
134
  object: <T extends z.ZodRawShape>(shape: T, params?: z.RawCreateParams) => z.ZodObject<T, "strip", z.ZodTypeAny, z.objectOutputType<T, z.ZodTypeAny, "strip">, z.objectInputType<T, z.ZodTypeAny, "strip">>;
135
- anyObject: () => z.ZodAny & CassandraTypeMarker;
135
+ json: () => z.ZodAny & CassandraTypeMarker;
136
136
  float: () => z.ZodEffects<z.ZodNumber, number, number> & CassandraTypeMarker;
137
137
  int: () => z.ZodNumber & CassandraTypeMarker;
138
138
  bigint: () => z.ZodBigInt & CassandraTypeMarker;
139
- smallint: () => z.ZodEffects<z.ZodNumber, number, number> & CassandraTypeMarker;
140
- tinyint: () => z.ZodEffects<z.ZodNumber, number, number> & CassandraTypeMarker;
141
- varint: () => z.ZodEffects<z.ZodNumber, bigint, number> & CassandraTypeMarker;
142
- varchar: (maxLength?: number) => z.ZodString & CassandraTypeMarker;
143
- ascii: () => z.ZodEffects<z.ZodString, string, string> & CassandraTypeMarker;
144
139
  timestamp: () => z.ZodDate & CassandraTypeMarker;
145
140
  time: () => z.ZodDate & CassandraTypeMarker;
146
141
  date: () => z.ZodDate & CassandraTypeMarker;
@@ -148,7 +143,6 @@ declare const Types: {
148
143
  blob: () => z.ZodType<Uint8Array<ArrayBuffer>, z.ZodTypeDef, Uint8Array<ArrayBuffer>> & CassandraTypeMarker;
149
144
  list: <T extends z.ZodTypeAny>(elementType: T) => z.ZodArray<T, "many"> & CassandraTypeMarker;
150
145
  set: <T extends z.ZodTypeAny>(elementType: T) => z.ZodSet<T> & CassandraTypeMarker;
151
- map: <K extends z.ZodTypeAny, V extends z.ZodTypeAny>(keyType: K, valueType: V) => z.ZodRecord<K, V> & CassandraTypeMarker;
152
146
  };
153
147
 
154
148
  type FieldFlags = {
package/dist/mod.js CHANGED
@@ -64,21 +64,21 @@ function getNewFields(schemaFields, tableMetadata2) {
64
64
  );
65
65
  }
66
66
  function getDeletedFields(schemaFields, tableMetadata2) {
67
- return tableMetadata2.filter((t) => !schemaFields.some(
68
- (field) => field.toLowerCase() === t.column_name.toLowerCase()
69
- )).map((t) => t.column_name);
67
+ return tableMetadata2.filter(
68
+ (t) => !schemaFields.some(
69
+ (field) => field.toLowerCase() === t.column_name.toLowerCase()
70
+ )
71
+ ).map((t) => t.column_name);
70
72
  }
71
73
  function getUpdatedFields(schemaFields, tableMetadata2, shape) {
72
74
  return schemaFields.filter(
73
- (field) => tableMetadata2.some(
74
- (t) => {
75
- const dbFieldName = t.column_name;
76
- const schemaFieldName = field;
77
- const dbType = t.type;
78
- const schemaType = convertZodToCassandraType(shape[field]);
79
- return dbFieldName.toLowerCase() === schemaFieldName.toLowerCase() && dbType !== schemaType;
80
- }
81
- )
75
+ (field) => tableMetadata2.some((t) => {
76
+ const dbFieldName = t.column_name;
77
+ const schemaFieldName = field;
78
+ const dbType = t.type;
79
+ const schemaType = convertZodToCassandraType(shape[field]);
80
+ return dbFieldName.toLowerCase() === schemaFieldName.toLowerCase() && dbType !== schemaType;
81
+ })
82
82
  );
83
83
  }
84
84
  function hasKeyFieldChanged(schema, newFields, deletedFields) {
@@ -819,8 +819,6 @@ function buildInsertParams(data, fieldConfigs) {
819
819
  const value = data[fieldName];
820
820
  if (value !== void 0) {
821
821
  params.push(convertValueToCassandra(value, config));
822
- } else if (!config.flags.optional) {
823
- throw new Error(`\u5FC5\u586B\u5B57\u6BB5 "${fieldName}" \u672A\u63D0\u4F9B`);
824
822
  } else {
825
823
  params.push(null);
826
824
  }
@@ -1013,8 +1011,8 @@ function convertValueToCassandra(value, config) {
1013
1011
  }
1014
1012
  }
1015
1013
  function convertValueFromCassandra(value, config, zodSchema, filedName) {
1016
- if (value === null || value === void 0) {
1017
- return value;
1014
+ if (value === null) {
1015
+ return config.flags.optional ? null : void 0;
1018
1016
  }
1019
1017
  switch (config.type) {
1020
1018
  case "timestamp":
@@ -1030,15 +1028,13 @@ function convertValueFromCassandra(value, config, zodSchema, filedName) {
1030
1028
  case "blob":
1031
1029
  return value instanceof Uint8Array ? value : new Uint8Array(value);
1032
1030
  case "text":
1033
- if (config.type !== "text") {
1034
- console.log("value", value);
1031
+ const zodTypeName = zodSchema?.shape[filedName]?._def?.typeName;
1032
+ if (config.type !== "text" || zodTypeName === "ZodAny" || zodTypeName === "ZodObject") {
1035
1033
  try {
1036
1034
  return JSON.parse(value);
1037
- } catch {
1035
+ } catch (error) {
1038
1036
  return value;
1039
1037
  }
1040
- } else if (typeof value === "string" && zodSchema?.shape[filedName]?._def?.typeName === "ZodAny") {
1041
- return JSON.parse(value);
1042
1038
  }
1043
1039
  return value;
1044
1040
  default:
@@ -1601,37 +1597,13 @@ var Types = {
1601
1597
  double: z.number,
1602
1598
  enum: z.enum,
1603
1599
  object: z.object,
1604
- anyObject: () => createCassandraType(z.any(), "text"),
1600
+ json: () => createCassandraType(z.any(), "text"),
1605
1601
  float: () => createCassandraType(
1606
1602
  z.number().transform((val) => parseFloat(val.toString())),
1607
1603
  "float"
1608
1604
  ),
1609
1605
  int: () => createCassandraType(z.number().int(), "int"),
1610
1606
  bigint: () => createCassandraType(z.bigint(), "bigint"),
1611
- smallint: () => createCassandraType(
1612
- z.number().int().refine((val) => val >= -32768 && val <= 32767, {
1613
- message: "Value must be between -32768 and 32767"
1614
- }),
1615
- "smallint"
1616
- ),
1617
- tinyint: () => createCassandraType(
1618
- z.number().int().refine((val) => val >= -128 && val <= 127, {
1619
- message: "Value must be between -128 and 127"
1620
- }),
1621
- "tinyint"
1622
- ),
1623
- varint: () => createCassandraType(
1624
- z.number().int().transform((val) => BigInt(val)),
1625
- "varint"
1626
- ),
1627
- // 字符串类型
1628
- varchar: (maxLength) => createCassandraType(z.string().max(maxLength || 65535), "varchar"),
1629
- ascii: () => createCassandraType(
1630
- z.string().refine((val) => /^[\x00-\x7F]*$/.test(val), {
1631
- message: "String must contain only ASCII characters"
1632
- }),
1633
- "ascii"
1634
- ),
1635
1607
  // 时间类型
1636
1608
  timestamp: () => createCassandraType(z.date(), "timestamp"),
1637
1609
  time: () => createCassandraType(z.date(), "time"),
@@ -1648,12 +1620,6 @@ var Types = {
1648
1620
  set: (elementType) => createCassandraType(
1649
1621
  z.set(elementType),
1650
1622
  `set<${convertZodToCassandraType(elementType)}>`
1651
- ),
1652
- map: (keyType, valueType) => createCassandraType(
1653
- z.record(keyType, valueType),
1654
- `map<${convertZodToCassandraType(keyType)}, ${convertZodToCassandraType(
1655
- valueType
1656
- )}>`
1657
1623
  )
1658
1624
  };
1659
1625
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "imean-cassandra-orm",
3
- "version": "2.6.1",
3
+ "version": "2.7.1",
4
4
  "description": "cassandra orm",
5
5
  "keywords": [
6
6
  "cassandra",