Define models for roles and folder data
This commit is contained in:
parent
32f11a56ef
commit
02a490d3e3
@ -1,3 +1,5 @@
|
||||
import type { RoleDefinition } from "./Roles";
|
||||
|
||||
export interface FolderData {
|
||||
folderNumber: string;
|
||||
name: string;
|
||||
@ -13,8 +15,109 @@ export interface FolderData {
|
||||
stakeholders: string[];
|
||||
}
|
||||
|
||||
export function isFolderData(data: any): data is FolderData {
|
||||
if (typeof data !== 'object' || data === null) return false;
|
||||
|
||||
const requiredStringFields = [
|
||||
'folderNumber',
|
||||
'name',
|
||||
'deedType',
|
||||
'description',
|
||||
'archived_description',
|
||||
'status',
|
||||
'created_at',
|
||||
'updated_at'
|
||||
];
|
||||
|
||||
for (const field of requiredStringFields) {
|
||||
if (typeof data[field] !== 'string') return false;
|
||||
}
|
||||
|
||||
const requiredArrayFields = [
|
||||
'customers',
|
||||
'documents',
|
||||
'motes',
|
||||
'stakeholders'
|
||||
];
|
||||
|
||||
for (const field of requiredArrayFields) {
|
||||
if (!Array.isArray(data[field]) || !data[field].every((item: any) => typeof item === 'string')) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
const emptyFolderData: FolderData = {
|
||||
folderNumber: '',
|
||||
name: '',
|
||||
deedType: '',
|
||||
description: '',
|
||||
archived_description: '',
|
||||
status: '',
|
||||
created_at: '',
|
||||
updated_at: '',
|
||||
customers: [],
|
||||
documents: [],
|
||||
motes: [],
|
||||
stakeholders: []
|
||||
};
|
||||
|
||||
const folderDataFields: string[] = Object.keys(emptyFolderData);
|
||||
|
||||
const FolderPublicFields: string[] = [];
|
||||
|
||||
// All the attributes are private in that case
|
||||
export const FolderPrivateFields = [
|
||||
...folderDataFields.filter(key => !FolderPublicFields.includes(key))
|
||||
];
|
||||
|
||||
export interface FolderCreated {
|
||||
processId: string,
|
||||
process: any, // Process
|
||||
folderData: FolderData,
|
||||
}
|
||||
|
||||
export function setDefaultFolderRoles(ownerId: string, stakeholdersId: string[], customersId: string[]): Record<string, RoleDefinition> {
|
||||
return {
|
||||
owner: {
|
||||
members: [ownerId],
|
||||
validation_rules: [
|
||||
{
|
||||
quorum: 0.5,
|
||||
fields: [...folderDataFields, 'roles'],
|
||||
min_sig_member: 1,
|
||||
},
|
||||
],
|
||||
storages: []
|
||||
},
|
||||
stakeholders: {
|
||||
members: stakeholdersId,
|
||||
validation_rules: [
|
||||
{
|
||||
quorum: 0.5,
|
||||
fields: ['documents', 'motes'],
|
||||
min_sig_member: 1,
|
||||
},
|
||||
],
|
||||
storages: []
|
||||
},
|
||||
customers: {
|
||||
members: customersId,
|
||||
validation_rules: [
|
||||
{
|
||||
quorum: 0.0,
|
||||
fields: folderDataFields,
|
||||
min_sig_member: 0.0,
|
||||
},
|
||||
],
|
||||
storages: []
|
||||
},
|
||||
apophis: {
|
||||
members: [ownerId],
|
||||
validation_rules: [],
|
||||
storages: []
|
||||
}
|
||||
}
|
||||
};
|
||||
|
11
src/sdk/models/Roles.ts
Normal file
11
src/sdk/models/Roles.ts
Normal file
@ -0,0 +1,11 @@
|
||||
export interface ValidationRule {
|
||||
quorum: number,
|
||||
fields: string[],
|
||||
min_sig_member: number,
|
||||
}
|
||||
|
||||
export interface RoleDefinition {
|
||||
members: string[],
|
||||
validation_rules: ValidationRule[],
|
||||
storages: string[]
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user