Refacto: folder-based anchoring (#6)

This commit is contained in:
Loïs Mansot 2023-09-20 11:50:56 +02:00 committed by GitHub
commit 1766dd3ac4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 93 additions and 10 deletions

View File

@ -0,0 +1,4 @@
export * from "../Notary/OfficeFolderAnchor";
import OfficeFolderAnchor from "../Notary/OfficeFolderAnchor";
export default OfficeFolderAnchor;

View File

@ -49,6 +49,5 @@ export enum EDocumentStatus {
ASKED = "ASKED", ASKED = "ASKED",
DEPOSITED = "DEPOSITED", DEPOSITED = "DEPOSITED",
VALIDATED = "VALIDATED", VALIDATED = "VALIDATED",
ANCHORED = "ANCHORED",
REFUSED = "REFUSED", REFUSED = "REFUSED",
} }

View File

@ -22,6 +22,9 @@ export default class File extends Resource {
@Expose() @Expose()
public mimetype!: string; public mimetype!: string;
@Expose()
public hash!: string;
@Expose() @Expose()
public size!: number; public size!: number;

View File

@ -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;

View File

@ -0,0 +1,5 @@
enum EBlockchainName{
TEZOS = "TEZOS",
}
export default EBlockchainName;

View File

@ -8,6 +8,8 @@ import Customer from "./Customer";
import Document from "./Document"; import Document from "./Document";
import Office from "./Office"; import Office from "./Office";
import EFolderStatus from "../Customer/EFolderStatus"; import EFolderStatus from "../Customer/EFolderStatus";
import EAnchoringStatus from "./EAnchoringStatus";
import OfficeFolderAnchor from "./OfficeFolderAnchor";
export default class OfficeFolder extends OfficeFolderCustomer { export default class OfficeFolder extends OfficeFolderCustomer {
@Expose() @Expose()
@ -68,4 +70,10 @@ export default class OfficeFolder extends OfficeFolderCustomer {
@ValidateNested({ groups: ["updateFolder"] }) @ValidateNested({ groups: ["updateFolder"] })
@Type(() => Document) @Type(() => Document)
documents?: Document[]; documents?: Document[];
@Expose()
@IsOptional({ groups: ["updateFolder"] })
@ValidateNested({ groups: ["updateFolder"] })
@Type(() => Document)
anchor?: OfficeFolderAnchor | null = null;
} }

View File

@ -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;
}

View File

@ -0,0 +1,4 @@
export * from "../Admin/OfficeFolderAnchor";
import OfficeFolderAnchor from "../Admin/OfficeFolderAnchor";
export default OfficeFolderAnchor;