From f09a300010736b1576270b473ffdc6e16ae9752e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFs=20Mansot?= <26844641+devfull@users.noreply.github.com> Date: Wed, 20 Sep 2023 10:51:21 +0200 Subject: [PATCH] refactor anchoring to be `OfficeFolder` based --- src/Admin/OfficeFolderAnchor.ts | 4 +++ src/Customer/Document.ts | 1 - src/Customer/File.ts | 3 ++ src/Notary/EAnchoringStatus.ts | 9 +++++ src/Notary/EBlockchainName.ts | 5 +++ src/Notary/Office.ts | 18 +++++----- src/Notary/OfficeFolder.ts | 8 +++++ src/Notary/OfficeFolderAnchor.ts | 51 ++++++++++++++++++++++++++++ src/SuperAdmin/OfficeFolderAnchor.ts | 4 +++ 9 files changed, 93 insertions(+), 10 deletions(-) create mode 100644 src/Admin/OfficeFolderAnchor.ts create mode 100644 src/Notary/EAnchoringStatus.ts create mode 100644 src/Notary/EBlockchainName.ts create mode 100644 src/Notary/OfficeFolderAnchor.ts create mode 100644 src/SuperAdmin/OfficeFolderAnchor.ts diff --git a/src/Admin/OfficeFolderAnchor.ts b/src/Admin/OfficeFolderAnchor.ts new file mode 100644 index 0000000..33100f4 --- /dev/null +++ b/src/Admin/OfficeFolderAnchor.ts @@ -0,0 +1,4 @@ +export * from "../Notary/OfficeFolderAnchor"; +import OfficeFolderAnchor from "../Notary/OfficeFolderAnchor"; + +export default OfficeFolderAnchor; diff --git a/src/Customer/Document.ts b/src/Customer/Document.ts index c286613..3f03d89 100644 --- a/src/Customer/Document.ts +++ b/src/Customer/Document.ts @@ -49,6 +49,5 @@ export enum EDocumentStatus { ASKED = "ASKED", DEPOSITED = "DEPOSITED", VALIDATED = "VALIDATED", - ANCHORED = "ANCHORED", REFUSED = "REFUSED", } diff --git a/src/Customer/File.ts b/src/Customer/File.ts index 3c322b6..2c70f06 100644 --- a/src/Customer/File.ts +++ b/src/Customer/File.ts @@ -22,6 +22,9 @@ export default class File extends Resource { @Expose() public mimetype!: string; + @Expose() + public hash!: string; + @Expose() public size!: number; diff --git a/src/Notary/EAnchoringStatus.ts b/src/Notary/EAnchoringStatus.ts new file mode 100644 index 0000000..aa1db0a --- /dev/null +++ b/src/Notary/EAnchoringStatus.ts @@ -0,0 +1,9 @@ +enum EAnchoringStatus { + QUEUED = "QUEUED", + ATTEMPTING = "ATTEMPTING", + VERIFIED_ON_CHAIN = "VERIFIED_ON_CHAIN", + VERIFYING_ON_CHAIN = "VERIFYING_ON_CHAIN", + ABANDONED = "ABANDONED", +} + +export default EAnchoringStatus; diff --git a/src/Notary/EBlockchainName.ts b/src/Notary/EBlockchainName.ts new file mode 100644 index 0000000..e9535a5 --- /dev/null +++ b/src/Notary/EBlockchainName.ts @@ -0,0 +1,5 @@ +enum EBlockchainName{ + TEZOS = "TEZOS", +} + +export default EBlockchainName; diff --git a/src/Notary/Office.ts b/src/Notary/Office.ts index 1a6fc68..9318065 100644 --- a/src/Notary/Office.ts +++ b/src/Notary/Office.ts @@ -11,36 +11,36 @@ export default class Office extends OfficeCustomer{ @Expose() @IsNotEmpty({ groups: ["createFolder" , "createDeedType" , "createDocumentType", "createRule", "createRole"] ,message: "UID is required" }) public override uid?: string; - + @Expose() @IsNotEmpty({ groups: ["createOffice"], message: "ID IdNote is required" }) public idNot?: string; - + @Expose() @IsNotEmpty({ groups: ["createOffice"], message: "Name is required" }) public override name!: string; - + @Expose() @IsNotEmpty({ groups: ["createOffice"], message: "CRPCEN is required" }) public override crpcen!: string; - + @Expose() @IsNotEmpty({ groups: ["createOffice"], message: "Address is required" }) @ValidateNested({ groups: ["createOffice"] }) @Type(() => Address) public override address?: Address; - + @Expose() public office_status?: EOfficeStatus | string; - + @Expose() @Type(() => DeedType) public deed_types?: DeedType[]; - + @Expose() @Type(() => User) public users?: User[]; - + @Expose() @Type(() => OfficeFolder) public office_folders?: OfficeFolder[]; @@ -49,4 +49,4 @@ export default class Office extends OfficeCustomer{ export enum EOfficeStatus { ACTIVATED = "ACTIVATED", DESACTIVATED = "DESACTIVATED", - } \ No newline at end of file + } diff --git a/src/Notary/OfficeFolder.ts b/src/Notary/OfficeFolder.ts index d5feb32..dbb8517 100644 --- a/src/Notary/OfficeFolder.ts +++ b/src/Notary/OfficeFolder.ts @@ -8,6 +8,8 @@ import Customer from "./Customer"; import Document from "./Document"; import Office from "./Office"; import EFolderStatus from "../Customer/EFolderStatus"; +import EAnchoringStatus from "./EAnchoringStatus"; +import OfficeFolderAnchor from "./OfficeFolderAnchor"; export default class OfficeFolder extends OfficeFolderCustomer { @Expose() @@ -68,4 +70,10 @@ export default class OfficeFolder extends OfficeFolderCustomer { @ValidateNested({ groups: ["updateFolder"] }) @Type(() => Document) documents?: Document[]; + + @Expose() + @IsOptional({ groups: ["updateFolder"] }) + @ValidateNested({ groups: ["updateFolder"] }) + @Type(() => Document) + anchor?: OfficeFolderAnchor | null = null; } diff --git a/src/Notary/OfficeFolderAnchor.ts b/src/Notary/OfficeFolderAnchor.ts new file mode 100644 index 0000000..e502203 --- /dev/null +++ b/src/Notary/OfficeFolderAnchor.ts @@ -0,0 +1,51 @@ +import Resource from "../Resource"; +import { Expose, Type } from "class-transformer"; +import EBlockchainName from "./EBlockchainName"; +import EAnchoringStatus from "./EAnchoringStatus"; +import OfficeFolder from "./OfficeFolder"; +import { IsDate } from "class-validator"; + +export default class OfficeFolderAnchor extends Resource { + @Expose() + public uid?: string; + + @Expose() + public hash_sources?: string[]; + + @Expose() + public root_hash?: string; + + @Expose() + public blockchain?: EBlockchainName | string = EBlockchainName.TEZOS; + + @Expose() + public status?: EAnchoringStatus | string = EAnchoringStatus.QUEUED; + + @Expose() + public anchor_nb_try?: number = 0; + + @Expose() + public tx_id?: string; + + @Expose() + public tx_link?: string; + + @Expose() + public tx_hash?: string; + + @Expose() + @Type(() => OfficeFolder) + public folder?: OfficeFolder | null = null; + + @Expose() + @IsDate() + public anchored_at?: Date | null = null; + + @Expose() + @IsDate() + public created_at?: Date | null = null; + + @Expose() + @IsDate() + public updated_at?: Date | null = null; +} diff --git a/src/SuperAdmin/OfficeFolderAnchor.ts b/src/SuperAdmin/OfficeFolderAnchor.ts new file mode 100644 index 0000000..ae5f805 --- /dev/null +++ b/src/SuperAdmin/OfficeFolderAnchor.ts @@ -0,0 +1,4 @@ +export * from "../Admin/OfficeFolderAnchor"; +import OfficeFolderAnchor from "../Admin/OfficeFolderAnchor"; + +export default OfficeFolderAnchor;