@prosopo/database 2.0.1 → 2.0.3

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.
@@ -1,4 +1,3 @@
1
- import { type UserCommitmentRecord } from "@prosopo/types-database";
2
- import { PowCaptcha } from "@prosopo/types";
3
- export declare const saveCaptchas: (imageCaptchaEvents: UserCommitmentRecord[], powCaptchaEvents: PowCaptcha[], atlasUri: string) => Promise<void>;
1
+ import { PoWCaptchaRecord, UserCommitmentRecord } from "@prosopo/types-database";
2
+ export declare const saveCaptchas: (imageCaptchaEvents: UserCommitmentRecord[], powCaptchaEvents: PoWCaptchaRecord[], atlasUri: string) => Promise<void>;
4
3
  //# sourceMappingURL=captchaDatabase.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"captchaDatabase.d.ts","sourceRoot":"","sources":["../../src/captchaDatabase/captchaDatabase.ts"],"names":[],"mappings":"AAcA,OAAO,EAEL,KAAK,oBAAoB,EAE1B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAM5C,eAAO,MAAM,YAAY,uBACH,oBAAoB,EAAE,oBACxB,UAAU,EAAE,YACpB,MAAM,kBA+BjB,CAAC"}
1
+ {"version":3,"file":"captchaDatabase.d.ts","sourceRoot":"","sources":["../../src/captchaDatabase/captchaDatabase.ts"],"names":[],"mappings":"AAeA,OAAO,EACL,gBAAgB,EAGhB,oBAAoB,EAGrB,MAAM,yBAAyB,CAAC;AAQjC,eAAO,MAAM,YAAY,uBACH,oBAAoB,EAAE,oBACxB,gBAAgB,EAAE,YAC1B,MAAM,kBAuDjB,CAAC"}
@@ -19,12 +19,30 @@ export const saveCaptchas = async (imageCaptchaEvents, powCaptchaEvents, atlasUr
19
19
  .on("error", reject);
20
20
  });
21
21
  if (imageCaptchaEvents.length) {
22
- await StoredImageCaptcha.insertMany(imageCaptchaEvents);
23
- logger.info("Mongo Saved Image Events");
22
+ const result = await StoredImageCaptcha.bulkWrite(imageCaptchaEvents.map((doc) => {
23
+ const { _id, ...safeDoc } = doc;
24
+ return {
25
+ updateOne: {
26
+ filter: { id: safeDoc.id },
27
+ update: { $set: safeDoc },
28
+ upsert: true,
29
+ },
30
+ };
31
+ }));
32
+ logger.info("Mongo Saved Image Events", result);
24
33
  }
25
34
  if (powCaptchaEvents.length) {
26
- await StoredPoWCaptcha.insertMany(powCaptchaEvents);
27
- logger.info("Mongo Saved PoW Events");
35
+ const result = await StoredPoWCaptcha.bulkWrite(powCaptchaEvents.map((doc) => {
36
+ const { _id, ...safeDoc } = doc;
37
+ return {
38
+ updateOne: {
39
+ filter: { challenge: safeDoc.challenge },
40
+ update: { $set: safeDoc },
41
+ upsert: true,
42
+ },
43
+ };
44
+ }));
45
+ logger.info("Mongo Saved PoW Events", result);
28
46
  }
29
47
  await connection.close();
30
48
  };
@@ -1 +1 @@
1
- {"version":3,"file":"captchaDatabase.js","sourceRoot":"","sources":["../../src/captchaDatabase/captchaDatabase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAcnD,OAAO,EACL,sBAAsB,EAEtB,0BAA0B,GAC3B,MAAM,yBAAyB,CAAC;AACjC,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;AAElC,IAAI,kBAAwD,CAAC;AAC7D,IAAI,gBAA4C,CAAC;AAEjD,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAC/B,kBAA0C,EAC1C,gBAA8B,EAC9B,QAAgB,EAChB,EAAE;IACF,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE;QACrD,UAAU,EAAE,OAAO;KACpB,CAAC,CAAC;IACH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,UAAU;aACP,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;YACjB,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAC1C,kBAAkB,GAAG,UAAU,CAAC,KAAK,CACnC,oBAAoB,EACpB,0BAA0B,CAC3B,CAAC;YACF,gBAAgB,GAAG,UAAU,CAAC,KAAK,CACjC,kBAAkB,EAClB,sBAAsB,CACvB,CAAC;YACF,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;aACD,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IACH,IAAI,kBAAkB,CAAC,MAAM,EAAE;QAC7B,MAAM,kBAAkB,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;KACzC;IACD,IAAI,gBAAgB,CAAC,MAAM,EAAE;QAC3B,MAAM,gBAAgB,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;KACvC;IAED,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;AAC3B,CAAC,CAAC"}
1
+ {"version":3,"file":"captchaDatabase.js","sourceRoot":"","sources":["../../src/captchaDatabase/captchaDatabase.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAEL,sBAAsB,EAItB,0BAA0B,GAC3B,MAAM,yBAAyB,CAAC;AACjC,OAAO,QAAQ,MAAM,UAAU,CAAC;AAEhC,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC;AAElC,IAAI,kBAAwD,CAAC;AAC7D,IAAI,gBAAkD,CAAC;AAEvD,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAC/B,kBAA0C,EAC1C,gBAAoC,EACpC,QAAgB,EAChB,EAAE;IACF,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE;QACrD,UAAU,EAAE,OAAO;KACpB,CAAC,CAAC;IACH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,UAAU;aACP,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;YACjB,MAAM,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YAC1C,kBAAkB,GAAG,UAAU,CAAC,KAAK,CACnC,oBAAoB,EACpB,0BAA0B,CAC3B,CAAC;YACF,gBAAgB,GAAG,UAAU,CAAC,KAAK,CACjC,kBAAkB,EAClB,sBAAsB,CACvB,CAAC;YACF,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;aACD,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;IACH,IAAI,kBAAkB,CAAC,MAAM,EAAE;QAC7B,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,SAAS,CAC/C,kBAAkB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAE7B,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,GAAG,CAAC;YAChC,OAAO;gBACL,SAAS,EAAE;oBACT,MAAM,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE;oBAC1B,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;oBACzB,MAAM,EAAE,IAAI;iBACb;aACF,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAC;KACjD;IACD,IAAI,gBAAgB,CAAC,MAAM,EAAE;QAC3B,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,SAAS,CAC7C,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAE3B,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,GAAG,CAAC;YAChC,OAAO;gBACL,SAAS,EAAE;oBACT,MAAM,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE;oBACxC,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;oBACzB,MAAM,EAAE,IAAI;iBACb;aACF,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;KAC/C;IAED,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;AAC3B,CAAC,CAAC"}
@@ -25,12 +25,34 @@ const saveCaptchas = async (imageCaptchaEvents, powCaptchaEvents, atlasUri) => {
25
25
  }).on("error", reject);
26
26
  });
27
27
  if (imageCaptchaEvents.length) {
28
- await StoredImageCaptcha.insertMany(imageCaptchaEvents);
29
- logger.info("Mongo Saved Image Events");
28
+ const result = await StoredImageCaptcha.bulkWrite(
29
+ imageCaptchaEvents.map((doc) => {
30
+ const { _id, ...safeDoc } = doc;
31
+ return {
32
+ updateOne: {
33
+ filter: { id: safeDoc.id },
34
+ update: { $set: safeDoc },
35
+ upsert: true
36
+ }
37
+ };
38
+ })
39
+ );
40
+ logger.info("Mongo Saved Image Events", result);
30
41
  }
31
42
  if (powCaptchaEvents.length) {
32
- await StoredPoWCaptcha.insertMany(powCaptchaEvents);
33
- logger.info("Mongo Saved PoW Events");
43
+ const result = await StoredPoWCaptcha.bulkWrite(
44
+ powCaptchaEvents.map((doc) => {
45
+ const { _id, ...safeDoc } = doc;
46
+ return {
47
+ updateOne: {
48
+ filter: { challenge: safeDoc.challenge },
49
+ update: { $set: safeDoc },
50
+ upsert: true
51
+ }
52
+ };
53
+ })
54
+ );
55
+ logger.info("Mongo Saved PoW Events", result);
34
56
  }
35
57
  await connection.close();
36
58
  };
@@ -330,7 +330,10 @@ class ProsopoDatabase extends common.AsyncFactory {
330
330
  * @description Store a Dapp User's captcha solution commitment
331
331
  */
332
332
  async storeDappUserSolution(captchas, commit) {
333
- const commitmentRecord = typesDatabase.UserCommitmentSchema.parse(commit);
333
+ const commitmentRecord = typesDatabase.UserCommitmentSchema.parse({
334
+ ...commit,
335
+ lastUpdatedTimestamp: Date.now()
336
+ });
334
337
  if (captchas.length) {
335
338
  await this.tables?.commitment.updateOne(
336
339
  {
@@ -362,32 +365,53 @@ class ProsopoDatabase extends common.AsyncFactory {
362
365
  * @description Adds a new PoW Captcha record to the database.
363
366
  * @param {string} challenge The challenge string for the captcha.
364
367
  * @param components The components of the PoW challenge.
365
- * @param {boolean} checked Indicates if the captcha has been checked.
368
+ * @param difficulty
369
+ * @param providerSignature
370
+ * @param ipAddress
371
+ * @param serverChecked
372
+ * @param userSubmitted
373
+ * @param storedStatus
374
+ * @param userSignature
366
375
  * @returns {Promise<void>} A promise that resolves when the record is added.
367
376
  */
368
- async storePowCaptchaRecord(challenge, components, checked, stored = false) {
377
+ async storePowCaptchaRecord(challenge, components, difficulty, providerSignature, ipAddress, serverChecked = false, userSubmitted = false, storedStatus = typesDatabase.StoredStatusNames.notStored, userSignature) {
369
378
  const tables = this.getTables();
370
379
  const powCaptchaRecord = {
371
380
  challenge,
372
381
  ...components,
373
- checked,
374
- stored
382
+ ipAddress,
383
+ result: { status: types.CaptchaStatus.pending },
384
+ userSubmitted,
385
+ serverChecked,
386
+ difficulty,
387
+ providerSignature,
388
+ userSignature,
389
+ lastUpdatedTimestamp: Date.now()
375
390
  };
376
391
  try {
377
392
  await tables.powCaptcha.create(powCaptchaRecord);
378
393
  this.logger.info("PowCaptcha record added successfully", {
379
394
  challenge,
380
- checked,
381
- stored
395
+ userSubmitted,
396
+ serverChecked,
397
+ storedStatus
382
398
  });
383
399
  } catch (error) {
384
400
  this.logger.error("Failed to add PowCaptcha record", {
385
401
  error,
386
402
  challenge,
387
- checked
403
+ userSubmitted,
404
+ serverChecked,
405
+ storedStatus
388
406
  });
389
407
  throw new common.ProsopoDBError("DATABASE.CAPTCHA_UPDATE_FAILED", {
390
- context: { error, challenge, checked },
408
+ context: {
409
+ error,
410
+ challenge,
411
+ userSubmitted,
412
+ serverChecked,
413
+ storedStatus
414
+ },
391
415
  logger: this.logger
392
416
  });
393
417
  }
@@ -395,7 +419,7 @@ class ProsopoDatabase extends common.AsyncFactory {
395
419
  /**
396
420
  * @description Retrieves a PoW Captcha record by its challenge string.
397
421
  * @param {string} challenge The challenge string to search for.
398
- * @returns {Promise<PowCaptcha | null>} A promise that resolves with the found record or null if not found.
422
+ * @returns {Promise<PoWCaptchaRecord | null>} A promise that resolves with the found record or null if not found.
399
423
  */
400
424
  async getPowCaptchaRecordByChallenge(challenge) {
401
425
  if (!this.tables) {
@@ -428,38 +452,59 @@ class ProsopoDatabase extends common.AsyncFactory {
428
452
  /**
429
453
  * @description Updates a PoW Captcha record in the database.
430
454
  * @param {string} challenge The challenge string of the captcha to be updated.
431
- * @param {boolean} checked New value indicating whether the captcha has been checked.
455
+ * @param result
456
+ * @param serverChecked
457
+ * @param userSubmitted
458
+ * @param storedStatus
459
+ * @param userSignature
432
460
  * @returns {Promise<void>} A promise that resolves when the record is updated.
433
461
  */
434
- async updatePowCaptchaRecord(challenge, checked) {
462
+ async updatePowCaptchaRecord(challenge, result, serverChecked = false, userSubmitted = false, userSignature) {
435
463
  const tables = this.getTables();
464
+ const timestamp = Date.now();
465
+ const update = {
466
+ result,
467
+ serverChecked,
468
+ userSubmitted,
469
+ userSignature,
470
+ lastUpdatedTimestamp: timestamp
471
+ };
436
472
  try {
437
473
  const updateResult = await tables.powCaptcha.updateOne(
438
474
  { challenge },
439
- { $set: { checked } }
475
+ {
476
+ $set: update
477
+ }
440
478
  );
441
479
  if (updateResult.matchedCount === 0) {
442
480
  this.logger.info("No PowCaptcha record found to update", {
443
481
  challenge,
444
- checked
482
+ ...update
445
483
  });
446
484
  throw new common.ProsopoDBError("DATABASE.CAPTCHA_GET_FAILED", {
447
- context: { challenge, checked },
485
+ context: {
486
+ challenge,
487
+ ...update
488
+ },
448
489
  logger: this.logger
449
490
  });
450
491
  }
451
492
  this.logger.info("PowCaptcha record updated successfully", {
452
493
  challenge,
453
- checked
494
+ ...update
454
495
  });
455
496
  } catch (error) {
456
497
  this.logger.error("Failed to update PowCaptcha record", {
457
498
  error,
458
499
  challenge,
459
- checked
500
+ ...update
460
501
  });
461
502
  throw new common.ProsopoDBError("DATABASE.CAPTCHA_UPDATE_FAILED", {
462
- context: { error, challenge, checked },
503
+ context: {
504
+ error,
505
+ challenge,
506
+ ...update
507
+ },
463
508
  logger: this.logger
464
509
  });
465
510
  }
@@ -468,35 +513,54 @@ class ProsopoDatabase extends common.AsyncFactory {
468
513
  */
469
514
  async getProcessedDappUserSolutions() {
470
515
  const docs = await this.tables?.usersolution.find({ processed: true }).lean();
471
- return docs ? docs.map((doc) => typesDatabase.UserSolutionSchema.parse(doc)) : [];
516
+ return docs || [];
472
517
  }
473
- /** @description Get processed Dapp User captcha commitments from the commitments table
518
+ /** @description Get processed Dapp User image captcha commitments from the commitments table
474
519
  */
475
520
  async getProcessedDappUserCommitments() {
476
521
  const docs = await this.tables?.commitment.find({ processed: true }).lean();
477
- return docs ? docs.map((doc) => typesDatabase.UserCommitmentSchema.parse(doc)) : [];
522
+ return docs || [];
478
523
  }
479
- /** @description Get Dapp User captcha commitments from the commitments table that have not been batched on-chain
524
+ /** @description Get serverChecked Dapp User image captcha commitments from the commitments table
480
525
  */
481
- async getUnbatchedDappUserCommitments() {
482
- const docs = await this.tables?.commitment.find({ batched: false }).lean();
483
- return docs ? docs.map((doc) => typesDatabase.UserCommitmentSchema.parse(doc)) : [];
526
+ async getCheckedDappUserCommitments() {
527
+ const docs = await this.tables?.commitment.find({ [typesDatabase.StoredStatusNames.serverChecked]: true }).lean();
528
+ return docs || [];
484
529
  }
485
530
  /** @description Get Dapp User captcha commitments from the commitments table that have not been counted towards the
486
531
  * client's total
487
532
  */
488
533
  async getUnstoredDappUserCommitments() {
489
534
  const docs = await this.tables?.commitment.find({
490
- $or: [{ stored: false }, { stored: { $exists: false } }]
535
+ $or: [
536
+ { storedStatus: { $ne: typesDatabase.StoredStatusNames.stored } },
537
+ { storedStatus: { $exists: false } }
538
+ ]
491
539
  }).lean();
492
- return docs ? docs.map((doc) => typesDatabase.UserCommitmentSchema.parse(doc)) : [];
540
+ return docs || [];
493
541
  }
494
542
  /** @description Mark a list of captcha commits as stored
495
543
  */
496
544
  async markDappUserCommitmentsStored(commitmentIds) {
545
+ const updateDoc = {
546
+ storedAtTimestamp: Date.now()
547
+ };
548
+ await this.tables?.commitment.updateMany(
549
+ { id: { $in: commitmentIds } },
550
+ { $set: updateDoc },
551
+ { upsert: false }
552
+ );
553
+ }
554
+ /** @description Mark a list of captcha commits as checked
555
+ */
556
+ async markDappUserCommitmentsChecked(commitmentIds) {
557
+ const updateDoc = {
558
+ [typesDatabase.StoredStatusNames.serverChecked]: true,
559
+ lastUpdatedTimestamp: Date.now()
560
+ };
497
561
  await this.tables?.commitment.updateMany(
498
562
  { id: { $in: commitmentIds } },
499
- { $set: { stored: true } },
563
+ { $set: updateDoc },
500
564
  { upsert: false }
501
565
  );
502
566
  }
@@ -504,24 +568,39 @@ class ProsopoDatabase extends common.AsyncFactory {
504
568
  */
505
569
  async getUnstoredDappUserPoWCommitments() {
506
570
  const docs = await this.tables?.powCaptcha.find({
507
- $or: [{ stored: false }, { stored: { $exists: false } }]
571
+ $or: [
572
+ { storedStatus: { $ne: typesDatabase.StoredStatusNames.stored } },
573
+ { storedStatus: { $exists: false } }
574
+ ]
508
575
  }).lean();
509
576
  return docs || [];
510
577
  }
511
578
  /** @description Mark a list of PoW captcha commits as stored
512
579
  */
513
580
  async markDappUserPoWCommitmentsStored(challenges) {
581
+ const updateDoc = {
582
+ storedAtTimestamp: Date.now()
583
+ };
514
584
  await this.tables?.powCaptcha.updateMany(
515
585
  { challenge: { $in: challenges } },
516
- { $set: { stored: true } },
586
+ { $set: updateDoc },
517
587
  { upsert: false }
518
588
  );
519
589
  }
520
- /** @description Get Dapp User captcha commitments from the commitments table that have been batched on-chain
590
+ /** @description Mark a list of PoW captcha commits as checked by the server
521
591
  */
522
- async getBatchedDappUserCommitments() {
523
- const docs = await this.tables?.commitment.find({ batched: true }).lean();
524
- return docs ? docs.map((doc) => typesDatabase.UserCommitmentSchema.parse(doc)) : [];
592
+ async markDappUserPoWCommitmentsChecked(challenges) {
593
+ const updateDoc = {
594
+ [typesDatabase.StoredStatusNames.serverChecked]: true,
595
+ lastUpdatedTimestamp: Date.now()
596
+ };
597
+ await this.tables?.powCaptcha.updateMany(
598
+ { challenge: { $in: challenges } },
599
+ {
600
+ $set: updateDoc
601
+ },
602
+ { upsert: false }
603
+ );
525
604
  }
526
605
  /** @description Remove processed Dapp User captcha solutions from the user solution table
527
606
  */
@@ -542,7 +621,7 @@ class ProsopoDatabase extends common.AsyncFactory {
542
621
  /**
543
622
  * @description Store a Dapp User's pending record
544
623
  */
545
- async storeDappUserPending(userAccount, requestHash, salt, deadlineTimestamp, requestedAtBlock) {
624
+ async storeDappUserPending(userAccount, requestHash, salt, deadlineTimestamp, requestedAtTimestamp, ipAddress) {
546
625
  if (!is.isHex(requestHash)) {
547
626
  throw new common.ProsopoDBError("DATABASE.INVALID_HASH", {
548
627
  context: {
@@ -557,7 +636,8 @@ class ProsopoDatabase extends common.AsyncFactory {
557
636
  salt,
558
637
  requestHash,
559
638
  deadlineTimestamp,
560
- requestedAtBlock
639
+ requestedAtTimestamp,
640
+ ipAddress
561
641
  };
562
642
  await this.tables?.pending.updateOne(
563
643
  { requestHash },
@@ -598,7 +678,7 @@ class ProsopoDatabase extends common.AsyncFactory {
598
678
  { requestHash },
599
679
  {
600
680
  $set: {
601
- pending: false
681
+ [types.CaptchaStatus.pending]: false
602
682
  }
603
683
  },
604
684
  { upsert: true }
@@ -716,14 +796,15 @@ class ProsopoDatabase extends common.AsyncFactory {
716
796
  async getDappUserCommitmentById(commitmentId) {
717
797
  const commitmentCursor = this.tables?.commitment?.findOne({ id: commitmentId }).lean();
718
798
  const doc = await commitmentCursor;
719
- return doc ? typesDatabase.UserCommitmentSchema.parse(doc) : void 0;
799
+ return doc ? doc : void 0;
720
800
  }
721
801
  /**
722
802
  * @description Get dapp user commitment by user account
723
- * @param {string[]} userAccount
803
+ * @param {string} userAccount
804
+ * @param {string} dappAccount
724
805
  */
725
- async getDappUserCommitmentByAccount(userAccount) {
726
- const docs = await this.tables?.commitment?.find({ userAccount }, { _id: 0 }, { sort: { _id: -1 } }).lean();
806
+ async getDappUserCommitmentByAccount(userAccount, dappAccount) {
807
+ const docs = await this.tables?.commitment?.find({ userAccount, dappAccount }, { _id: 0 }, { sort: { _id: -1 } }).lean();
727
808
  return docs ? docs : [];
728
809
  }
729
810
  /**
@@ -732,9 +813,14 @@ class ProsopoDatabase extends common.AsyncFactory {
732
813
  */
733
814
  async approveDappUserCommitment(commitmentId) {
734
815
  try {
816
+ const result = { status: types.CaptchaStatus.approved };
817
+ const updateDoc = {
818
+ result,
819
+ lastUpdatedTimestamp: Date.now()
820
+ };
735
821
  await this.tables?.commitment?.findOneAndUpdate(
736
822
  { id: commitmentId },
737
- { $set: { status: types.CaptchaStatus.approved } },
823
+ { $set: updateDoc },
738
824
  { upsert: false }
739
825
  ).lean();
740
826
  } catch (err) {
@@ -744,37 +830,41 @@ class ProsopoDatabase extends common.AsyncFactory {
744
830
  }
745
831
  }
746
832
  /**
747
- * @description Flag a dapp user's solutions as used by calculated solution
748
- * @param {string[]} captchaIds
833
+ * @description Disapprove a dapp user's solution
834
+ * @param {string} commitmentId
835
+ * @param reason
749
836
  */
750
- async flagProcessedDappUserSolutions(captchaIds) {
837
+ async disapproveDappUserCommitment(commitmentId, reason) {
751
838
  try {
752
- await this.tables?.usersolution?.updateMany(
753
- { captchaId: { $in: captchaIds } },
754
- { $set: { processed: true } },
839
+ const updateDoc = {
840
+ result: { status: types.CaptchaStatus.disapproved, reason },
841
+ lastUpdatedTimestamp: Date.now()
842
+ };
843
+ await this.tables?.commitment?.findOneAndUpdate(
844
+ { id: commitmentId },
845
+ { $set: updateDoc },
755
846
  { upsert: false }
756
847
  ).lean();
757
848
  } catch (err) {
758
- throw new common.ProsopoDBError("DATABASE.SOLUTION_FLAG_FAILED", {
759
- context: { error: err, captchaIds }
849
+ throw new common.ProsopoDBError("DATABASE.SOLUTION_APPROVE_FAILED", {
850
+ context: { error: err, commitmentId }
760
851
  });
761
852
  }
762
853
  }
763
854
  /**
764
- * @description Flag dapp users' commitments as used by calculated solution
765
- * @param {string[]} commitmentIds
855
+ * @description Flag a dapp user's solutions as used by calculated solution
856
+ * @param {string[]} captchaIds
766
857
  */
767
- async flagProcessedDappUserCommitments(commitmentIds) {
858
+ async flagProcessedDappUserSolutions(captchaIds) {
768
859
  try {
769
- const distinctCommitmentIds = [...new Set(commitmentIds)];
770
- await this.tables?.commitment?.updateMany(
771
- { id: { $in: distinctCommitmentIds } },
860
+ await this.tables?.usersolution?.updateMany(
861
+ { captchaId: { $in: captchaIds } },
772
862
  { $set: { processed: true } },
773
863
  { upsert: false }
774
864
  ).lean();
775
865
  } catch (err) {
776
- throw new common.ProsopoDBError("DATABASE.COMMITMENT_FLAG_FAILED", {
777
- context: { error: err, commitmentIds }
866
+ throw new common.ProsopoDBError("DATABASE.SOLUTION_FLAG_FAILED", {
867
+ context: { error: err, captchaIds }
778
868
  });
779
869
  }
780
870
  }
@@ -782,12 +872,12 @@ class ProsopoDatabase extends common.AsyncFactory {
782
872
  * @description Flag dapp users' commitments as used by calculated solution
783
873
  * @param {string[]} commitmentIds
784
874
  */
785
- async flagBatchedDappUserCommitments(commitmentIds) {
875
+ async flagProcessedDappUserCommitments(commitmentIds) {
786
876
  try {
787
877
  const distinctCommitmentIds = [...new Set(commitmentIds)];
788
878
  await this.tables?.commitment?.updateMany(
789
879
  { id: { $in: distinctCommitmentIds } },
790
- { $set: { batched: true } },
880
+ { $set: { processed: true } },
791
881
  { upsert: false }
792
882
  ).lean();
793
883
  } catch (err) {
@@ -796,20 +886,6 @@ class ProsopoDatabase extends common.AsyncFactory {
796
886
  });
797
887
  }
798
888
  }
799
- /**
800
- * @description Get the last batch commit time or return 0 if none
801
- */
802
- async getLastBatchCommitTime() {
803
- const cursor = this.tables?.scheduler?.findOne({
804
- processName: types.ScheduledTaskNames.BatchCommitment,
805
- status: types.ScheduledTaskStatus.Completed
806
- }).sort({ timestamp: -1 });
807
- const doc = await cursor?.lean();
808
- if (doc) {
809
- return doc.datetime;
810
- }
811
- return /* @__PURE__ */ new Date(0);
812
- }
813
889
  /**
814
890
  * @description Get a scheduled task status record by task ID and status
815
891
  */
@@ -825,22 +901,38 @@ class ProsopoDatabase extends common.AsyncFactory {
825
901
  if (status) {
826
902
  lookup.status = status;
827
903
  }
828
- const cursor = await this.tables?.scheduler?.findOne(lookup).sort({ datetime: -1 }).lean();
904
+ const cursor = await this.tables?.scheduler?.findOne(lookup).sort({ datetime: -1 }).limit(1).lean();
829
905
  return cursor ? cursor : void 0;
830
906
  }
831
907
  /**
832
- * @description Store the status of a scheduled task and an optional result
908
+ * @description Create the status of a scheduled task
833
909
  */
834
- async storeScheduledTaskStatus(taskId, task, status, result) {
835
- const now = /* @__PURE__ */ new Date();
910
+ async createScheduledTaskStatus(taskName, status) {
911
+ const now = (/* @__PURE__ */ new Date()).getTime();
836
912
  const doc = typesDatabase.ScheduledTaskSchema.parse({
837
- taskId,
838
- processName: task,
913
+ processName: taskName,
839
914
  datetime: now,
915
+ status
916
+ });
917
+ const taskRecord = await this.tables?.scheduler.create(doc);
918
+ return taskRecord._id;
919
+ }
920
+ /**
921
+ * @description Update the status of a scheduled task and an optional result
922
+ */
923
+ async updateScheduledTaskStatus(taskId, status, result) {
924
+ const update = {
840
925
  status,
926
+ updated: (/* @__PURE__ */ new Date()).getTime(),
841
927
  ...result && { result }
842
- });
843
- await this.tables?.scheduler.create(doc);
928
+ };
929
+ await this.tables?.scheduler.updateOne(
930
+ { _id: taskId },
931
+ { $set: update },
932
+ {
933
+ upsert: false
934
+ }
935
+ );
844
936
  }
845
937
  }
846
938
  exports.ProsopoDatabase = ProsopoDatabase;
@@ -1,9 +1,8 @@
1
- /// <reference types="mongoose/types/connection.js" />
2
- import { AsyncFactory, type Logger } from "@prosopo/common";
3
- import { type Captcha, type CaptchaSolution, CaptchaStates, type DatasetBase, type DatasetWithIds, type DatasetWithIdsAndTree, type Hash, type PendingCaptchaRequest, type PowCaptcha, PoWChallengeComponents, PoWChallengeId, ScheduledTaskNames, type ScheduledTaskResult, ScheduledTaskStatus } from "@prosopo/types";
4
- import { type Database, type ScheduledTaskRecord, type SolutionRecord, type Tables, type UserCommitmentRecord, type UserSolutionRecord } from "@prosopo/types-database";
1
+ import { AsyncFactory, type Logger, TranslationKey } from "@prosopo/common";
2
+ import { type Captcha, CaptchaResult, type CaptchaSolution, CaptchaStates, type DatasetBase, type DatasetWithIds, type DatasetWithIdsAndTree, type Hash, type PendingCaptchaRequest, PoWChallengeComponents, PoWChallengeId, ScheduledTaskNames, type ScheduledTaskResult, ScheduledTaskStatus } from "@prosopo/types";
3
+ import { type Database, PoWCaptchaRecord, type ScheduledTaskRecord, type SolutionRecord, StoredStatus, type Tables, type UserCommitment, UserCommitmentRecord, type UserSolutionRecord } from "@prosopo/types-database";
5
4
  import { type DeleteResult } from "mongodb";
6
- import mongoose, { type Connection } from "mongoose";
5
+ import mongoose, { type Connection, ObjectId } from "mongoose";
7
6
  export declare class ProsopoDatabase extends AsyncFactory implements Database {
8
7
  url: string;
9
8
  tables?: Tables;
@@ -24,21 +23,22 @@ export declare class ProsopoDatabase extends AsyncFactory implements Database {
24
23
  updateCaptcha(captcha: Captcha, datasetId: Hash): Promise<void>;
25
24
  removeCaptchas(captchaIds: string[]): Promise<void>;
26
25
  getDatasetDetails(datasetId: Hash): Promise<DatasetBase>;
27
- storeDappUserSolution(captchas: CaptchaSolution[], commit: UserCommitmentRecord): Promise<void>;
28
- storePowCaptchaRecord(challenge: PoWChallengeId, components: PoWChallengeComponents, checked: boolean, stored?: boolean): Promise<void>;
29
- getPowCaptchaRecordByChallenge(challenge: string): Promise<PowCaptcha | null>;
30
- updatePowCaptchaRecord(challenge: string, checked: boolean): Promise<void>;
26
+ storeDappUserSolution(captchas: CaptchaSolution[], commit: UserCommitment): Promise<void>;
27
+ storePowCaptchaRecord(challenge: PoWChallengeId, components: PoWChallengeComponents, difficulty: number, providerSignature: string, ipAddress: string, serverChecked?: boolean, userSubmitted?: boolean, storedStatus?: StoredStatus, userSignature?: string): Promise<void>;
28
+ getPowCaptchaRecordByChallenge(challenge: string): Promise<PoWCaptchaRecord | null>;
29
+ updatePowCaptchaRecord(challenge: PoWChallengeId, result: CaptchaResult, serverChecked?: boolean, userSubmitted?: boolean, userSignature?: string): Promise<void>;
31
30
  getProcessedDappUserSolutions(): Promise<UserSolutionRecord[]>;
32
31
  getProcessedDappUserCommitments(): Promise<UserCommitmentRecord[]>;
33
- getUnbatchedDappUserCommitments(): Promise<UserCommitmentRecord[]>;
32
+ getCheckedDappUserCommitments(): Promise<UserCommitmentRecord[]>;
34
33
  getUnstoredDappUserCommitments(): Promise<UserCommitmentRecord[]>;
35
34
  markDappUserCommitmentsStored(commitmentIds: Hash[]): Promise<void>;
36
- getUnstoredDappUserPoWCommitments(): Promise<PowCaptcha[]>;
35
+ markDappUserCommitmentsChecked(commitmentIds: Hash[]): Promise<void>;
36
+ getUnstoredDappUserPoWCommitments(): Promise<PoWCaptchaRecord[]>;
37
37
  markDappUserPoWCommitmentsStored(challenges: string[]): Promise<void>;
38
- getBatchedDappUserCommitments(): Promise<UserCommitmentRecord[]>;
38
+ markDappUserPoWCommitmentsChecked(challenges: string[]): Promise<void>;
39
39
  removeProcessedDappUserSolutions(commitmentIds: string[]): Promise<DeleteResult | undefined>;
40
40
  removeProcessedDappUserCommitments(commitmentIds: string[]): Promise<DeleteResult | undefined>;
41
- storeDappUserPending(userAccount: string, requestHash: string, salt: string, deadlineTimestamp: number, requestedAtBlock: number): Promise<void>;
41
+ storeDappUserPending(userAccount: string, requestHash: string, salt: string, deadlineTimestamp: number, requestedAtTimestamp: number, ipAddress: string): Promise<void>;
42
42
  getDappUserPending(requestHash: string): Promise<PendingCaptchaRequest>;
43
43
  updateDappUserPendingStatus(requestHash: string): Promise<void>;
44
44
  getAllCaptchasByDatasetId(datasetId: string, state?: CaptchaStates): Promise<Captcha[] | undefined>;
@@ -47,14 +47,14 @@ export declare class ProsopoDatabase extends AsyncFactory implements Database {
47
47
  getRandomSolvedCaptchasFromSingleDataset(datasetId: string, size: number): Promise<CaptchaSolution[]>;
48
48
  getDappUserSolutionById(commitmentId: string): Promise<UserSolutionRecord | undefined>;
49
49
  getDappUserCommitmentById(commitmentId: string): Promise<UserCommitmentRecord | undefined>;
50
- getDappUserCommitmentByAccount(userAccount: string): Promise<UserCommitmentRecord[]>;
50
+ getDappUserCommitmentByAccount(userAccount: string, dappAccount: string): Promise<UserCommitmentRecord[]>;
51
51
  approveDappUserCommitment(commitmentId: string): Promise<void>;
52
+ disapproveDappUserCommitment(commitmentId: string, reason?: TranslationKey): Promise<void>;
52
53
  flagProcessedDappUserSolutions(captchaIds: Hash[]): Promise<void>;
53
54
  flagProcessedDappUserCommitments(commitmentIds: Hash[]): Promise<void>;
54
- flagBatchedDappUserCommitments(commitmentIds: Hash[]): Promise<void>;
55
- getLastBatchCommitTime(): Promise<Date>;
56
- getScheduledTaskStatus(taskId: string, status: ScheduledTaskStatus): Promise<ScheduledTaskRecord | undefined>;
55
+ getScheduledTaskStatus(taskId: ObjectId, status: ScheduledTaskStatus): Promise<ScheduledTaskRecord | undefined>;
57
56
  getLastScheduledTaskStatus(task: ScheduledTaskNames, status?: ScheduledTaskStatus): Promise<ScheduledTaskRecord | undefined>;
58
- storeScheduledTaskStatus(taskId: `0x${string}`, task: ScheduledTaskNames, status: ScheduledTaskStatus, result?: ScheduledTaskResult): Promise<void>;
57
+ createScheduledTaskStatus(taskName: ScheduledTaskNames, status: ScheduledTaskStatus): Promise<ObjectId>;
58
+ updateScheduledTaskStatus(taskId: ObjectId, status: ScheduledTaskStatus, result?: ScheduledTaskResult): Promise<void>;
59
59
  }
60
60
  //# sourceMappingURL=mongo.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mongo.d.ts","sourceRoot":"","sources":["../../src/databases/mongo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mongo.d.ts","sourceRoot":"","sources":["../../src/databases/mongo.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { isHex } from "@polkadot/util/is";
2
- import { AsyncFactory, ProsopoDBError, ProsopoEnvError, getLoggerDefault, } from "@prosopo/common";
3
- import { CaptchaStates, CaptchaStatus, DatasetWithIdsAndTreeSchema, ScheduledTaskNames, ScheduledTaskStatus, } from "@prosopo/types";
4
- import { CaptchaRecordSchema, DatasetRecordSchema, PendingRecordSchema, PowCaptchaRecordSchema, ScheduledTaskRecordSchema, ScheduledTaskSchema, SolutionRecordSchema, UserCommitmentRecordSchema, UserCommitmentSchema, UserSolutionRecordSchema, UserSolutionSchema, } from "@prosopo/types-database";
2
+ import { AsyncFactory, getLoggerDefault, ProsopoDBError, ProsopoEnvError, } from "@prosopo/common";
3
+ import { CaptchaStates, CaptchaStatus, DatasetWithIdsAndTreeSchema, } from "@prosopo/types";
4
+ import { CaptchaRecordSchema, DatasetRecordSchema, PendingRecordSchema, PowCaptchaRecordSchema, ScheduledTaskRecordSchema, ScheduledTaskSchema, SolutionRecordSchema, StoredStatusNames, UserCommitmentRecordSchema, UserCommitmentSchema, UserSolutionRecordSchema, } from "@prosopo/types-database";
5
5
  import { ServerApiVersion } from "mongodb";
6
6
  import mongoose from "mongoose";
7
7
  mongoose.set("strictQuery", false);
@@ -278,7 +278,10 @@ export class ProsopoDatabase extends AsyncFactory {
278
278
  });
279
279
  }
280
280
  async storeDappUserSolution(captchas, commit) {
281
- const commitmentRecord = UserCommitmentSchema.parse(commit);
281
+ const commitmentRecord = UserCommitmentSchema.parse({
282
+ ...commit,
283
+ lastUpdatedTimestamp: Date.now(),
284
+ });
282
285
  if (captchas.length) {
283
286
  await this.tables?.commitment.updateOne({
284
287
  id: commit.id,
@@ -302,30 +305,45 @@ export class ProsopoDatabase extends AsyncFactory {
302
305
  await this.tables?.usersolution.bulkWrite(ops);
303
306
  }
304
307
  }
305
- async storePowCaptchaRecord(challenge, components, checked, stored = false) {
308
+ async storePowCaptchaRecord(challenge, components, difficulty, providerSignature, ipAddress, serverChecked = false, userSubmitted = false, storedStatus = StoredStatusNames.notStored, userSignature) {
306
309
  const tables = this.getTables();
307
310
  const powCaptchaRecord = {
308
311
  challenge,
309
312
  ...components,
310
- checked,
311
- stored
313
+ ipAddress,
314
+ result: { status: CaptchaStatus.pending },
315
+ userSubmitted,
316
+ serverChecked,
317
+ difficulty,
318
+ providerSignature,
319
+ userSignature,
320
+ lastUpdatedTimestamp: Date.now(),
312
321
  };
313
322
  try {
314
323
  await tables.powCaptcha.create(powCaptchaRecord);
315
324
  this.logger.info("PowCaptcha record added successfully", {
316
325
  challenge,
317
- checked,
318
- stored
326
+ userSubmitted,
327
+ serverChecked,
328
+ storedStatus,
319
329
  });
320
330
  }
321
331
  catch (error) {
322
332
  this.logger.error("Failed to add PowCaptcha record", {
323
333
  error,
324
334
  challenge,
325
- checked,
335
+ userSubmitted,
336
+ serverChecked,
337
+ storedStatus,
326
338
  });
327
339
  throw new ProsopoDBError("DATABASE.CAPTCHA_UPDATE_FAILED", {
328
- context: { error, challenge, checked },
340
+ context: {
341
+ error,
342
+ challenge,
343
+ userSubmitted,
344
+ serverChecked,
345
+ storedStatus,
346
+ },
329
347
  logger: this.logger,
330
348
  });
331
349
  }
@@ -338,9 +356,7 @@ export class ProsopoDatabase extends AsyncFactory {
338
356
  });
339
357
  }
340
358
  try {
341
- const record = await this.tables.powCaptcha
342
- .findOne({ challenge })
343
- .lean();
359
+ const record = await this.tables.powCaptcha.findOne({ challenge }).lean();
344
360
  if (record) {
345
361
  this.logger.info("PowCaptcha record retrieved successfully", {
346
362
  challenge,
@@ -361,33 +377,50 @@ export class ProsopoDatabase extends AsyncFactory {
361
377
  });
362
378
  }
363
379
  }
364
- async updatePowCaptchaRecord(challenge, checked) {
380
+ async updatePowCaptchaRecord(challenge, result, serverChecked = false, userSubmitted = false, userSignature) {
365
381
  const tables = this.getTables();
382
+ const timestamp = Date.now();
383
+ const update = {
384
+ result,
385
+ serverChecked,
386
+ userSubmitted,
387
+ userSignature,
388
+ lastUpdatedTimestamp: timestamp,
389
+ };
366
390
  try {
367
- const updateResult = await tables.powCaptcha.updateOne({ challenge }, { $set: { checked } });
391
+ const updateResult = await tables.powCaptcha.updateOne({ challenge }, {
392
+ $set: update,
393
+ });
368
394
  if (updateResult.matchedCount === 0) {
369
395
  this.logger.info("No PowCaptcha record found to update", {
370
396
  challenge,
371
- checked,
397
+ ...update,
372
398
  });
373
399
  throw new ProsopoDBError("DATABASE.CAPTCHA_GET_FAILED", {
374
- context: { challenge, checked },
400
+ context: {
401
+ challenge,
402
+ ...update,
403
+ },
375
404
  logger: this.logger,
376
405
  });
377
406
  }
378
407
  this.logger.info("PowCaptcha record updated successfully", {
379
408
  challenge,
380
- checked,
409
+ ...update,
381
410
  });
382
411
  }
383
412
  catch (error) {
384
413
  this.logger.error("Failed to update PowCaptcha record", {
385
414
  error,
386
415
  challenge,
387
- checked,
416
+ ...update,
388
417
  });
389
418
  throw new ProsopoDBError("DATABASE.CAPTCHA_UPDATE_FAILED", {
390
- context: { error, challenge, checked },
419
+ context: {
420
+ error,
421
+ challenge,
422
+ ...update,
423
+ },
391
424
  logger: this.logger,
392
425
  });
393
426
  }
@@ -396,41 +429,69 @@ export class ProsopoDatabase extends AsyncFactory {
396
429
  const docs = await this.tables?.usersolution
397
430
  .find({ processed: true })
398
431
  .lean();
399
- return docs ? docs.map((doc) => UserSolutionSchema.parse(doc)) : [];
432
+ return docs || [];
400
433
  }
401
434
  async getProcessedDappUserCommitments() {
402
- const docs = await this.tables?.commitment.find({ processed: true }).lean();
403
- return docs ? docs.map((doc) => UserCommitmentSchema.parse(doc)) : [];
435
+ const docs = await this.tables?.commitment
436
+ .find({ processed: true })
437
+ .lean();
438
+ return docs || [];
404
439
  }
405
- async getUnbatchedDappUserCommitments() {
406
- const docs = await this.tables?.commitment.find({ batched: false }).lean();
407
- return docs ? docs.map((doc) => UserCommitmentSchema.parse(doc)) : [];
440
+ async getCheckedDappUserCommitments() {
441
+ const docs = await this.tables?.commitment
442
+ .find({ [StoredStatusNames.serverChecked]: true })
443
+ .lean();
444
+ return docs || [];
408
445
  }
409
446
  async getUnstoredDappUserCommitments() {
410
447
  const docs = await this.tables?.commitment
411
448
  .find({
412
- $or: [{ stored: false }, { stored: { $exists: false } }],
449
+ $or: [
450
+ { storedStatus: { $ne: StoredStatusNames.stored } },
451
+ { storedStatus: { $exists: false } },
452
+ ],
413
453
  })
414
454
  .lean();
415
- return docs ? docs.map((doc) => UserCommitmentSchema.parse(doc)) : [];
455
+ return docs || [];
416
456
  }
417
457
  async markDappUserCommitmentsStored(commitmentIds) {
418
- await this.tables?.commitment.updateMany({ id: { $in: commitmentIds } }, { $set: { stored: true } }, { upsert: false });
458
+ const updateDoc = {
459
+ storedAtTimestamp: Date.now(),
460
+ };
461
+ await this.tables?.commitment.updateMany({ id: { $in: commitmentIds } }, { $set: updateDoc }, { upsert: false });
462
+ }
463
+ async markDappUserCommitmentsChecked(commitmentIds) {
464
+ const updateDoc = {
465
+ [StoredStatusNames.serverChecked]: true,
466
+ lastUpdatedTimestamp: Date.now(),
467
+ };
468
+ await this.tables?.commitment.updateMany({ id: { $in: commitmentIds } }, { $set: updateDoc }, { upsert: false });
419
469
  }
420
470
  async getUnstoredDappUserPoWCommitments() {
421
471
  const docs = await this.tables?.powCaptcha
422
472
  .find({
423
- $or: [{ stored: false }, { stored: { $exists: false } }],
473
+ $or: [
474
+ { storedStatus: { $ne: StoredStatusNames.stored } },
475
+ { storedStatus: { $exists: false } },
476
+ ],
424
477
  })
425
478
  .lean();
426
479
  return docs || [];
427
480
  }
428
481
  async markDappUserPoWCommitmentsStored(challenges) {
429
- await this.tables?.powCaptcha.updateMany({ challenge: { $in: challenges } }, { $set: { stored: true } }, { upsert: false });
482
+ const updateDoc = {
483
+ storedAtTimestamp: Date.now(),
484
+ };
485
+ await this.tables?.powCaptcha.updateMany({ challenge: { $in: challenges } }, { $set: updateDoc }, { upsert: false });
430
486
  }
431
- async getBatchedDappUserCommitments() {
432
- const docs = await this.tables?.commitment.find({ batched: true }).lean();
433
- return docs ? docs.map((doc) => UserCommitmentSchema.parse(doc)) : [];
487
+ async markDappUserPoWCommitmentsChecked(challenges) {
488
+ const updateDoc = {
489
+ [StoredStatusNames.serverChecked]: true,
490
+ lastUpdatedTimestamp: Date.now(),
491
+ };
492
+ await this.tables?.powCaptcha.updateMany({ challenge: { $in: challenges } }, {
493
+ $set: updateDoc,
494
+ }, { upsert: false });
434
495
  }
435
496
  async removeProcessedDappUserSolutions(commitmentIds) {
436
497
  return await this.tables?.usersolution.deleteMany({
@@ -444,7 +505,7 @@ export class ProsopoDatabase extends AsyncFactory {
444
505
  id: { $in: commitmentIds },
445
506
  });
446
507
  }
447
- async storeDappUserPending(userAccount, requestHash, salt, deadlineTimestamp, requestedAtBlock) {
508
+ async storeDappUserPending(userAccount, requestHash, salt, deadlineTimestamp, requestedAtTimestamp, ipAddress) {
448
509
  if (!isHex(requestHash)) {
449
510
  throw new ProsopoDBError("DATABASE.INVALID_HASH", {
450
511
  context: {
@@ -459,7 +520,8 @@ export class ProsopoDatabase extends AsyncFactory {
459
520
  salt,
460
521
  requestHash,
461
522
  deadlineTimestamp,
462
- requestedAtBlock,
523
+ requestedAtTimestamp,
524
+ ipAddress,
463
525
  };
464
526
  await this.tables?.pending.updateOne({ requestHash: requestHash }, { $set: pendingRecord }, { upsert: true });
465
527
  }
@@ -488,7 +550,7 @@ export class ProsopoDatabase extends AsyncFactory {
488
550
  }
489
551
  await this.tables?.pending.updateOne({ requestHash: requestHash }, {
490
552
  $set: {
491
- pending: false,
553
+ [CaptchaStatus.pending]: false,
492
554
  },
493
555
  }, { upsert: true });
494
556
  }
@@ -593,18 +655,23 @@ export class ProsopoDatabase extends AsyncFactory {
593
655
  ?.findOne({ id: commitmentId })
594
656
  .lean();
595
657
  const doc = await commitmentCursor;
596
- return doc ? UserCommitmentSchema.parse(doc) : undefined;
658
+ return doc ? doc : undefined;
597
659
  }
598
- async getDappUserCommitmentByAccount(userAccount) {
660
+ async getDappUserCommitmentByAccount(userAccount, dappAccount) {
599
661
  const docs = await this.tables?.commitment
600
- ?.find({ userAccount }, { _id: 0 }, { sort: { _id: -1 } })
662
+ ?.find({ userAccount, dappAccount }, { _id: 0 }, { sort: { _id: -1 } })
601
663
  .lean();
602
664
  return docs ? docs : [];
603
665
  }
604
666
  async approveDappUserCommitment(commitmentId) {
605
667
  try {
668
+ const result = { status: CaptchaStatus.approved };
669
+ const updateDoc = {
670
+ result,
671
+ lastUpdatedTimestamp: Date.now(),
672
+ };
606
673
  await this.tables?.commitment
607
- ?.findOneAndUpdate({ id: commitmentId }, { $set: { status: CaptchaStatus.approved } }, { upsert: false })
674
+ ?.findOneAndUpdate({ id: commitmentId }, { $set: updateDoc }, { upsert: false })
608
675
  .lean();
609
676
  }
610
677
  catch (err) {
@@ -613,36 +680,39 @@ export class ProsopoDatabase extends AsyncFactory {
613
680
  });
614
681
  }
615
682
  }
616
- async flagProcessedDappUserSolutions(captchaIds) {
683
+ async disapproveDappUserCommitment(commitmentId, reason) {
617
684
  try {
618
- await this.tables?.usersolution
619
- ?.updateMany({ captchaId: { $in: captchaIds } }, { $set: { processed: true } }, { upsert: false })
685
+ const updateDoc = {
686
+ result: { status: CaptchaStatus.disapproved, reason },
687
+ lastUpdatedTimestamp: Date.now(),
688
+ };
689
+ await this.tables?.commitment
690
+ ?.findOneAndUpdate({ id: commitmentId }, { $set: updateDoc }, { upsert: false })
620
691
  .lean();
621
692
  }
622
693
  catch (err) {
623
- throw new ProsopoDBError("DATABASE.SOLUTION_FLAG_FAILED", {
624
- context: { error: err, captchaIds },
694
+ throw new ProsopoDBError("DATABASE.SOLUTION_APPROVE_FAILED", {
695
+ context: { error: err, commitmentId },
625
696
  });
626
697
  }
627
698
  }
628
- async flagProcessedDappUserCommitments(commitmentIds) {
699
+ async flagProcessedDappUserSolutions(captchaIds) {
629
700
  try {
630
- const distinctCommitmentIds = [...new Set(commitmentIds)];
631
- await this.tables?.commitment
632
- ?.updateMany({ id: { $in: distinctCommitmentIds } }, { $set: { processed: true } }, { upsert: false })
701
+ await this.tables?.usersolution
702
+ ?.updateMany({ captchaId: { $in: captchaIds } }, { $set: { processed: true } }, { upsert: false })
633
703
  .lean();
634
704
  }
635
705
  catch (err) {
636
- throw new ProsopoDBError("DATABASE.COMMITMENT_FLAG_FAILED", {
637
- context: { error: err, commitmentIds },
706
+ throw new ProsopoDBError("DATABASE.SOLUTION_FLAG_FAILED", {
707
+ context: { error: err, captchaIds },
638
708
  });
639
709
  }
640
710
  }
641
- async flagBatchedDappUserCommitments(commitmentIds) {
711
+ async flagProcessedDappUserCommitments(commitmentIds) {
642
712
  try {
643
713
  const distinctCommitmentIds = [...new Set(commitmentIds)];
644
714
  await this.tables?.commitment
645
- ?.updateMany({ id: { $in: distinctCommitmentIds } }, { $set: { batched: true } }, { upsert: false })
715
+ ?.updateMany({ id: { $in: distinctCommitmentIds } }, { $set: { processed: true } }, { upsert: false })
646
716
  .lean();
647
717
  }
648
718
  catch (err) {
@@ -651,19 +721,6 @@ export class ProsopoDatabase extends AsyncFactory {
651
721
  });
652
722
  }
653
723
  }
654
- async getLastBatchCommitTime() {
655
- const cursor = this.tables?.scheduler
656
- ?.findOne({
657
- processName: ScheduledTaskNames.BatchCommitment,
658
- status: ScheduledTaskStatus.Completed,
659
- })
660
- .sort({ timestamp: -1 });
661
- const doc = await cursor?.lean();
662
- if (doc) {
663
- return doc.datetime;
664
- }
665
- return new Date(0);
666
- }
667
724
  async getScheduledTaskStatus(taskId, status) {
668
725
  const cursor = await this.tables?.scheduler
669
726
  ?.findOne({ taskId: taskId, status: status })
@@ -678,19 +735,29 @@ export class ProsopoDatabase extends AsyncFactory {
678
735
  const cursor = await this.tables?.scheduler
679
736
  ?.findOne(lookup)
680
737
  .sort({ datetime: -1 })
738
+ .limit(1)
681
739
  .lean();
682
740
  return cursor ? cursor : undefined;
683
741
  }
684
- async storeScheduledTaskStatus(taskId, task, status, result) {
685
- const now = new Date();
742
+ async createScheduledTaskStatus(taskName, status) {
743
+ const now = new Date().getTime();
686
744
  const doc = ScheduledTaskSchema.parse({
687
- taskId,
688
- processName: task,
745
+ processName: taskName,
689
746
  datetime: now,
690
747
  status,
748
+ });
749
+ const taskRecord = await this.tables?.scheduler.create(doc);
750
+ return taskRecord._id;
751
+ }
752
+ async updateScheduledTaskStatus(taskId, status, result) {
753
+ const update = {
754
+ status,
755
+ updated: new Date().getTime(),
691
756
  ...(result && { result }),
757
+ };
758
+ await this.tables?.scheduler.updateOne({ _id: taskId }, { $set: update }, {
759
+ upsert: false,
692
760
  });
693
- await this.tables?.scheduler.create(doc);
694
761
  }
695
762
  }
696
763
  //# sourceMappingURL=mongo.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mongo.js","sourceRoot":"","sources":["../../src/databases/mongo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mongo.js","sourceRoot":"","sources":["../../src/databases/mongo.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,46 +1,46 @@
1
1
  {
2
- "name": "@prosopo/database",
3
- "version": "2.0.1",
4
- "description": "Prosopo database plugins for provider",
5
- "main": "dist/index.js",
6
- "type": "module",
7
- "engines": {
8
- "node": ">=20",
9
- "npm": ">=9"
10
- },
11
- "exports": {
12
- ".": {
13
- "import": "./dist/index.js",
14
- "require": "./dist/cjs/index.cjs"
15
- }
16
- },
17
- "scripts": {
18
- "test": "echo \"No test specified\"",
19
- "clean": "tsc --build --clean",
20
- "build": "tsc --build --verbose",
21
- "build:cjs": "npx vite --config vite.cjs.config.ts build"
22
- },
23
- "repository": {
24
- "type": "git",
25
- "url": "git+ssh://git@github.com/prosopo/captcha.git"
26
- },
27
- "author": "Prosopo Limited",
28
- "license": "Apache-2.0",
29
- "bugs": {
30
- "url": "https://github.com/prosopo/captcha/issues"
31
- },
32
- "homepage": "https://github.com/prosopo/captcha#readme",
33
- "dependencies": {
34
- "@prosopo/common": "2.0.1",
35
- "@prosopo/config": "2.0.1",
36
- "@prosopo/types": "2.0.1",
37
- "@prosopo/types-database": "2.0.1",
38
- "mongodb-memory-server": "^9.4.0",
39
- "mongoose": "^8.5.1"
40
- },
41
- "devDependencies": {
42
- "tslib": "2.6.2",
43
- "typescript": "5.1.6"
44
- },
45
- "sideEffects": false
2
+ "name": "@prosopo/database",
3
+ "version": "2.0.3",
4
+ "description": "Prosopo database plugins for provider",
5
+ "main": "dist/index.js",
6
+ "type": "module",
7
+ "engines": {
8
+ "node": ">=20",
9
+ "npm": ">=9"
10
+ },
11
+ "exports": {
12
+ ".": {
13
+ "import": "./dist/index.js",
14
+ "require": "./dist/cjs/index.cjs"
15
+ }
16
+ },
17
+ "scripts": {
18
+ "test": "echo \"No test specified\"",
19
+ "clean": "tsc --build --clean",
20
+ "build": "tsc --build --verbose",
21
+ "build:cjs": "npx vite --config vite.cjs.config.ts build"
22
+ },
23
+ "repository": {
24
+ "type": "git",
25
+ "url": "git+ssh://git@github.com/prosopo/captcha.git"
26
+ },
27
+ "author": "Prosopo Limited",
28
+ "license": "Apache-2.0",
29
+ "bugs": {
30
+ "url": "https://github.com/prosopo/captcha/issues"
31
+ },
32
+ "homepage": "https://github.com/prosopo/captcha#readme",
33
+ "dependencies": {
34
+ "@prosopo/common": "2.0.3",
35
+ "@prosopo/config": "2.0.3",
36
+ "@prosopo/types": "2.0.3",
37
+ "@prosopo/types-database": "2.0.3",
38
+ "mongodb-memory-server": "^9.4.0",
39
+ "mongoose": "^8.5.1"
40
+ },
41
+ "devDependencies": {
42
+ "tslib": "2.6.2",
43
+ "typescript": "5.1.6"
44
+ },
45
+ "sideEffects": false
46
46
  }