@keltoi/hydra 2.4.1 → 2.5.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.
Files changed (2) hide show
  1. package/index.js +89 -14
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -107,7 +107,7 @@ class Entity{
107
107
  if(result.isError) return Promise.reject(result)
108
108
  }
109
109
 
110
- static collectionfromResult(result=new Result()){
110
+ static collectionFromResult(result=new Result()){
111
111
  if(result.isError) return Promise.reject(result)
112
112
  }
113
113
  }
@@ -204,15 +204,18 @@ class Linking{
204
204
  }
205
205
 
206
206
  class Traceable extends Entity{
207
+ #createdAt
207
208
  constructor({
208
209
  key={},
209
210
  struct={},
210
211
  createdAt=new Date()
211
212
  }){
212
- super(key,{...struct,createdAt});
213
+ super(key,struct);
214
+
215
+ this.#createdAt = createdAt;
213
216
  }
214
217
 
215
- get createdAt(){ return this.data.createdAt }
218
+ get createdAt(){ return this.#createdAt }
216
219
 
217
220
  static structMe(
218
221
  db=knex(),
@@ -309,6 +312,10 @@ class Thing extends Entity{
309
312
  }
310
313
 
311
314
  class Changeable extends Entity{
315
+ #createdAt
316
+ #updatedAt
317
+ #active
318
+
312
319
  constructor({
313
320
  key={},
314
321
  struct = {},
@@ -318,18 +325,23 @@ class Changeable extends Entity{
318
325
  }){
319
326
  super(
320
327
  key,
321
- {
322
- ...struct,
323
- createdAt,
324
- updatedAt,
325
- active
326
- }
328
+ struct
327
329
  );
330
+
331
+ this.#createdAt = createdAt;
332
+ this.#updatedAt = updatedAt;
333
+ this.#active = active;
328
334
  }
329
335
 
330
- get createdAt(){ return this.data.createdAt }
331
- get updatedAt(){ return this.data.updatedAt }
332
- get active(){ return this.data.active }
336
+ get createdAt(){ return this.createdAt }
337
+ get updatedAt(){ return this.updatedAt }
338
+ get active(){ return this.active }
339
+
340
+ get change(){
341
+ return {
342
+ updatedAt: this.updatedAt
343
+ }
344
+ }
333
345
 
334
346
  static structMe(
335
347
  db=knex(),
@@ -546,12 +558,50 @@ class ChangeableRepository extends Repository$1{
546
558
  super(entity,context);
547
559
  }
548
560
 
561
+ insert = (entity = new Changeable())=>
562
+ this.myContext()
563
+ .insert({
564
+ ...entity.$,
565
+ createdAt:entity.createdAt,
566
+ active:true
567
+ })
568
+ .then(()=>new Result({ data:entity }))
569
+ .catch(err=>Promise.reject( new Result({code:500,message:err}) ))
570
+
571
+ create = (entity = new Changeable())=>
572
+ this.myContext()
573
+ .insert({
574
+ ...entity.data,
575
+ active:true
576
+ },
577
+ Object.keys(entity.key)
578
+ )
579
+ .then(ids=>{
580
+ entity.key = ids[0];
581
+
582
+ return new Result({ data:entity })
583
+ })
584
+ .catch(err=>Promise.reject( new Result({code:500,message:err}) ))
585
+
586
+ update = (entity = new Changeable())=>
587
+ this.myContext()
588
+ .where(entity.key)
589
+ .update({
590
+ ...entity.data,
591
+ updatedAt:new Date()
592
+ })
593
+ .then(affected=> affected > 0
594
+ ? new Result({ code:200,data:`${this.name} updated` })
595
+ : new Result({ code:404,message:'Not found' })
596
+ )
597
+ .catch(err=>Promise.reject( new Result({code:500,message:err}) ))
598
+
549
599
  reactive = (entity = new Changeable())=>
550
600
  this.myContext()
551
601
  .where(entity.key)
552
602
  .update({
553
603
  active:true,
554
- updatedAt:entity.updatedAt
604
+ updatedAt:new Date()
555
605
  })
556
606
  .then(affected=> affected > 0
557
607
  ? new Result({ code:200,data:`${this.name} updated` })
@@ -564,7 +614,7 @@ class ChangeableRepository extends Repository$1{
564
614
  .where(entity.key)
565
615
  .update({
566
616
  active:false,
567
- updatedAt:entity.updatedAt
617
+ updatedAt:new Date()
568
618
  })
569
619
  .then(affected=> affected > 0
570
620
  ? new Result({ code:200,data:`${this.name} updated` })
@@ -656,6 +706,31 @@ class TraceableRepository extends Repository$1{
656
706
  .then(result => new Result({data:result}))
657
707
  .catch(err=>Promise.reject( new Result({code:500,message:err})) )
658
708
 
709
+ insert = (entity = new Traceable()) =>
710
+ this.myContext()
711
+ .insert({
712
+ ...entity.$,
713
+ createdAt:entity.createdAt
714
+ })
715
+ .then(()=>new Result({ data:entity }))
716
+ .catch(err=>Promise.reject( new Result({code:500,message:err})) )
717
+
718
+ create = (entity = new Traceable()) =>
719
+ this.myContext()
720
+ .insert(
721
+ {
722
+ ...entity.$,
723
+ createdAt:new Date()
724
+ },
725
+ Object.keys(entity.key)
726
+ )
727
+ .then(ids=>{
728
+ entity.key = ids[0];
729
+
730
+ return new Result({ data:entity })
731
+ })
732
+ .catch(err=>Promise.reject( new Result({code:500,message:err})) )
733
+
659
734
  update = () => Promise.reject( new Result({code:400,message:'Cannot update a logged object'}) )
660
735
 
661
736
  delete = () => Promise.reject( new Result({code:400,message:'Cannot delete a logged object'}) )
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keltoi/hydra",
3
- "version": "2.4.1",
3
+ "version": "2.5.1",
4
4
  "description": "Boilerplate to start your API from zero using Repository Pattern",
5
5
  "main": "index.js",
6
6
  "module": "index.js",