masterrecord 0.3.62 → 0.3.63

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/SQLLiteEngine.js CHANGED
@@ -797,17 +797,11 @@ class SQLLiteEngine {
797
797
  var fieldName = dirtyFields[column];
798
798
  var entityDef = model.__entity[fieldName];
799
799
  if(entityDef && entityDef.nullable === false && entityDef.primary !== true){
800
- // Determine the value that will actually be persisted for this field
801
- var persistedValue;
802
- switch(entityDef.type){
803
- case "integer":
804
- persistedValue = model["_" + fieldName];
805
- break;
806
- case "belongsTo":
807
- persistedValue = model["_" + fieldName] !== undefined ? model["_" + fieldName] : model[fieldName];
808
- break;
809
- default:
810
- persistedValue = model[fieldName];
800
+ // Read the raw backing field to get the set()-transformed value,
801
+ // bypassing get() which may change the type (e.g. parseFloat)
802
+ var persistedValue = model["_" + fieldName];
803
+ if(persistedValue === undefined){
804
+ persistedValue = model[fieldName];
811
805
  }
812
806
  var isEmptyString = (typeof persistedValue === 'string') && (persistedValue.trim() === '');
813
807
  if(persistedValue === undefined || persistedValue === null || isEmptyString){
@@ -862,7 +856,7 @@ class SQLLiteEngine {
862
856
  params.push(intValue);
863
857
  break;
864
858
  case "string":
865
- var strValue = model[dirtyFields[column]];
859
+ var strValue = model["_" + dirtyFields[column]];
866
860
 
867
861
  // 🔥 Apply toDatabase transformer before validation
868
862
  try {
@@ -880,7 +874,7 @@ class SQLLiteEngine {
880
874
  params.push(strValue);
881
875
  break;
882
876
  case "boolean":
883
- var boolValue = model[dirtyFields[column]];
877
+ var boolValue = model["_" + dirtyFields[column]];
884
878
 
885
879
  // 🔥 Apply toDatabase transformer before validation
886
880
  try {
@@ -902,7 +896,7 @@ class SQLLiteEngine {
902
896
  params.push(boolValue);
903
897
  break;
904
898
  case "time":
905
- var timeValue = model[dirtyFields[column]];
899
+ var timeValue = model["_" + dirtyFields[column]];
906
900
 
907
901
  // 🔥 Apply toDatabase transformer before validation
908
902
  try {
@@ -925,7 +919,7 @@ class SQLLiteEngine {
925
919
  break;
926
920
  default:
927
921
  sqlParts.push(`[${dirtyFields[column]}] = ?`);
928
- params.push(model[dirtyFields[column]]);
922
+ params.push(model["_" + dirtyFields[column]]);
929
923
  }
930
924
  }
931
925
 
package/mySQLEngine.js CHANGED
@@ -520,16 +520,11 @@ class MySQLEngine {
520
520
  const entityDef = model.__entity[fieldName];
521
521
 
522
522
  if (entityDef && entityDef.nullable === false && entityDef.primary !== true) {
523
- let persistedValue;
524
- switch (entityDef.type) {
525
- case "integer":
526
- persistedValue = model["_" + fieldName];
527
- break;
528
- case "belongsTo":
529
- persistedValue = model["_" + fieldName] !== undefined ? model["_" + fieldName] : model[fieldName];
530
- break;
531
- default:
532
- persistedValue = model[fieldName];
523
+ // Read the raw backing field to get the set()-transformed value,
524
+ // bypassing get() which may change the type (e.g. parseFloat)
525
+ let persistedValue = model["_" + fieldName];
526
+ if (persistedValue === undefined) {
527
+ persistedValue = model[fieldName];
533
528
  }
534
529
  const isEmptyString = (typeof persistedValue === 'string') && (persistedValue.trim() === '');
535
530
  if (persistedValue === undefined || persistedValue === null || isEmptyString) {
@@ -578,7 +573,7 @@ class MySQLEngine {
578
573
  break;
579
574
 
580
575
  case "string":
581
- let strValue = model[dirtyFields[column]];
576
+ let strValue = model["_" + dirtyFields[column]];
582
577
  try {
583
578
  strValue = FieldTransformer.toDatabase(strValue, model.__entity[dirtyFields[column]], model.__entity.__name, dirtyFields[column]);
584
579
  } catch (transformError) {
@@ -594,7 +589,7 @@ class MySQLEngine {
594
589
  break;
595
590
 
596
591
  case "boolean":
597
- let boolValue = model[dirtyFields[column]];
592
+ let boolValue = model["_" + dirtyFields[column]];
598
593
  try {
599
594
  boolValue = FieldTransformer.toDatabase(boolValue, model.__entity[dirtyFields[column]], model.__entity.__name, dirtyFields[column]);
600
595
  } catch (transformError) {
@@ -612,7 +607,7 @@ class MySQLEngine {
612
607
  break;
613
608
 
614
609
  case "time":
615
- let timeValue = model[dirtyFields[column]];
610
+ let timeValue = model["_" + dirtyFields[column]];
616
611
  try {
617
612
  timeValue = FieldTransformer.toDatabase(timeValue, model.__entity[dirtyFields[column]], model.__entity.__name, dirtyFields[column]);
618
613
  } catch (transformError) {
@@ -629,12 +624,12 @@ class MySQLEngine {
629
624
 
630
625
  case "hasMany":
631
626
  sqlParts.push(`\`${dirtyFields[column]}\` = ?`);
632
- params.push(model[dirtyFields[column]]);
627
+ params.push(model["_" + dirtyFields[column]]);
633
628
  break;
634
629
 
635
630
  default:
636
631
  sqlParts.push(`\`${dirtyFields[column]}\` = ?`);
637
- params.push(model[dirtyFields[column]]);
632
+ params.push(model["_" + dirtyFields[column]]);
638
633
  }
639
634
  }
640
635
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "masterrecord",
3
- "version": "0.3.62",
3
+ "version": "0.3.63",
4
4
  "description": "An Object-relational mapping for the Master framework. Master Record connects classes to relational database tables to establish a database with almost zero-configuration ",
5
5
  "main": "MasterRecord.js",
6
6
  "bin": {
package/postgresEngine.js CHANGED
@@ -457,16 +457,11 @@ class postgresEngine {
457
457
 
458
458
  // Check for required fields
459
459
  if (entityDef && entityDef.nullable === false && entityDef.primary !== true) {
460
- let persistedValue;
461
- switch (entityDef.type) {
462
- case "integer":
463
- persistedValue = model["_" + fieldName];
464
- break;
465
- case "belongsTo":
466
- persistedValue = model["_" + fieldName] !== undefined ? model["_" + fieldName] : model[fieldName];
467
- break;
468
- default:
469
- persistedValue = model[fieldName];
460
+ // Read the raw backing field to get the set()-transformed value,
461
+ // bypassing get() which may change the type (e.g. parseFloat)
462
+ let persistedValue = model["_" + fieldName];
463
+ if (persistedValue === undefined) {
464
+ persistedValue = model[fieldName];
470
465
  }
471
466
  const isEmptyString = (typeof persistedValue === 'string') && (persistedValue.trim() === '');
472
467
  if (persistedValue === undefined || persistedValue === null || isEmptyString) {
@@ -519,7 +514,7 @@ class postgresEngine {
519
514
  break;
520
515
 
521
516
  case "string":
522
- let strValue = model[dirtyFields[column]];
517
+ let strValue = model["_" + dirtyFields[column]];
523
518
  // Apply toDatabase transformer
524
519
  try {
525
520
  strValue = FieldTransformer.toDatabase(strValue, model.__entity[dirtyFields[column]], model.__entity.__name, dirtyFields[column]);
@@ -537,7 +532,7 @@ class postgresEngine {
537
532
  break;
538
533
 
539
534
  case "boolean":
540
- let boolValue = model[dirtyFields[column]];
535
+ let boolValue = model["_" + dirtyFields[column]];
541
536
  // Apply toDatabase transformer
542
537
  try {
543
538
  boolValue = FieldTransformer.toDatabase(boolValue, model.__entity[dirtyFields[column]], model.__entity.__name, dirtyFields[column]);
@@ -555,7 +550,7 @@ class postgresEngine {
555
550
  break;
556
551
 
557
552
  case "time":
558
- let timeValue = model[dirtyFields[column]];
553
+ let timeValue = model["_" + dirtyFields[column]];
559
554
  // Apply toDatabase transformer
560
555
  try {
561
556
  timeValue = FieldTransformer.toDatabase(timeValue, model.__entity[dirtyFields[column]], model.__entity.__name, dirtyFields[column]);
@@ -574,12 +569,12 @@ class postgresEngine {
574
569
 
575
570
  case "hasMany":
576
571
  sqlParts.push(`${dirtyFields[column]} = $${paramIndex++}`);
577
- params.push(model[dirtyFields[column]]);
572
+ params.push(model["_" + dirtyFields[column]]);
578
573
  break;
579
574
 
580
575
  default:
581
576
  sqlParts.push(`${dirtyFields[column]} = $${paramIndex++}`);
582
- params.push(model[dirtyFields[column]]);
577
+ params.push(model["_" + dirtyFields[column]]);
583
578
  }
584
579
  }
585
580