Cerys Lewis
4 weeks ago
2 changed files with 109 additions and 0 deletions
@ -0,0 +1,101 @@ |
|||
<?phpSchemaDocumentChildField |
|||
|
|||
|
|||
namespace Darksparrow\AuxiliumSchemaBuilder\Examples\SchemaBuilder\Schemas; |
|||
require_once __DIR__ . "/../../vendor/autoload.php"; |
|||
|
|||
use Darksparrow\AuxiliumSchemaBuilder\Attributes\SchemaDocumentChildField; |
|||
use Darksparrow\AuxiliumSchemaBuilder\Enumerators\SchemaFieldExistence; |
|||
use Darksparrow\AuxiliumSchemaBuilder\Attributes\SchemaDocument; |
|||
use Darksparrow\AuxiliumSchemaBuilder\Attributes\SchemaDocumentField; |
|||
use Darksparrow\AuxiliumSchemaBuilder\Interfaces\SchemaDocumentInterface; |
|||
|
|||
#[SchemaDocument( |
|||
Name: "Message", |
|||
MaxSize: 0, |
|||
Comment: "The organisation object itself SHOULD not have a value", |
|||
MimeType: "message/rfc822", |
|||
)] |
|||
class Organisation implements SchemaDocumentInterface |
|||
{ |
|||
#[SchemaDocumentField( |
|||
Name: "name", |
|||
Existence: SchemaFieldExistence::MUST, |
|||
Comment: "This MUST be the organisation's name", |
|||
MaxSize: 2048, |
|||
MimeType: "test/plain", |
|||
Children: [ |
|||
new SchemaDocumentField( |
|||
Name: "trading_as", |
|||
Existence: SchemaFieldExistence::SHOULD, |
|||
MaxSize: 256, |
|||
MIMEType: "text/plain", |
|||
Comment: "This SHOULD be the organisation's short trading name, or the abbreviation they would usually go by", |
|||
) |
|||
] |
|||
)] |
|||
public string $Name; |
|||
|
|||
|
|||
#[SchemaDocumentField( |
|||
Name: "departments", |
|||
Existence: SchemaFieldExistence::SHOULD, |
|||
Comment: "This SHOULD be an 'array node' of all sub-organisations if applicable", |
|||
ValidSchemas: [ |
|||
"https://schemas.auxiliumsoftware.co.uk/v1/collection.json", |
|||
], |
|||
MaxSize: 0, |
|||
Child: new SchemaDocumentChildField( |
|||
Comment: null, |
|||
ValidSchemas: [ |
|||
"https://schemas.auxiliumsoftware.co.uk/v1/organisation.json", |
|||
], |
|||
), |
|||
)] |
|||
public array $Departments; |
|||
|
|||
|
|||
#[SchemaDocumentField( |
|||
Name: "cases", |
|||
Existence: SchemaFieldExistence::SHOULD, |
|||
Comment: "This SHOULD be an 'array node' of all the cases the organisation is either directly working on or the client of", |
|||
ValidSchemas: [ |
|||
"https://schemas.auxiliumsoftware.co.uk/v1/collection.json", |
|||
], |
|||
MaxSize: 0, |
|||
Child: new SchemaDocumentChildField( |
|||
Comment: null, |
|||
ValidSchemas: [ |
|||
"https://schemas.auxiliumsoftware.co.uk/v1/case.json", |
|||
], |
|||
), |
|||
)] |
|||
public array $Cases; |
|||
|
|||
|
|||
#[SchemaDocumentField( |
|||
Name: "staff", |
|||
Existence: SchemaFieldExistence::SHOULD, |
|||
Comment: "This SHOULD be an 'array node' of all the staff that cannot be categorised into departments, or in the case of small organisations with no departments, all staff", |
|||
ValidSchemas: [ |
|||
"https://schemas.auxiliumsoftware.co.uk/v1/collection.json", |
|||
], |
|||
MaxSize: 0, |
|||
Child: new SchemaDocumentChildField( |
|||
Comment: null, |
|||
ValidSchemas: [ |
|||
"https://schemas.auxiliumsoftware.co.uk/v1/user.json", |
|||
], |
|||
), |
|||
)] |
|||
public array $Staff; |
|||
|
|||
|
|||
public function __construct(array $data) |
|||
{ |
|||
$this->Name = $data["name"]; |
|||
$this->Departments = $data["departments"]; |
|||
$this->Cases = $data["cases"]; |
|||
$this->Staff = $data["staff"]; |
|||
} |
|||
} |
@ -0,0 +1,8 @@ |
|||
<?php |
|||
|
|||
namespace Darksparrow\AuxiliumSchemaBuilder\Interfaces; |
|||
|
|||
interface SchemaDocumentInterface |
|||
{ |
|||
public function __construct(array $data); |
|||
} |
Loading…
Reference in new issue