/** * @return Schema */ protected static function defineSchema() { $fields = []; /** @var T\Type $class */ foreach (self::getAllTypes() as $type => $class) { switch ($type) { case 'Identifier': $fields[] = Fb::create($type, $class::create())->asAMap()->className('Gdbots\\Pbj\\WellKnown\\TimeUuidIdentifier')->build(); break; case 'IntEnum': $fields[] = Fb::create($type, $class::create())->asAMap()->className('Gdbots\\Tests\\Pbj\\Fixtures\\Enum\\IntEnum')->build(); break; case 'StringEnum': $fields[] = Fb::create($type, $class::create())->asAMap()->className('Gdbots\\Tests\\Pbj\\Fixtures\\Enum\\StringEnum')->build(); break; case 'Message': $fields[] = Fb::create($type, $class::create())->asAMap()->className('Gdbots\\Tests\\Pbj\\Fixtures\\NestedMessage')->build(); break; default: $fields[] = Fb::create($type, $class::create())->asAMap()->build(); } } $schema = new Schema('pbj:gdbots:tests.pbj:fixtures:maps-message:1-0-0', __CLASS__, $fields); MessageResolver::registerSchema($schema); return $schema; }
/** * @return Schema */ protected static function defineSchema() { $schema = new Schema('pbj:gdbots:tests.pbj:fixtures:email-message:1-0-0', __CLASS__, [Fb::create('id', T\TimeUuidType::create())->required()->build(), Fb::create('from_name', T\StringType::create())->build(), Fb::create('from_email', T\StringType::create())->required()->format('email')->build(), Fb::create('subject', T\StringType::create())->withDefault(function (EmailMessage $message = null) { if (!$message) { return null; } return implode(',', $message->get('labels', [])) . ' test'; })->build(), Fb::create('body', T\StringType::create())->build(), Fb::create('priority', T\IntEnumType::create())->required()->className('Gdbots\\Tests\\Pbj\\Fixtures\\Enum\\Priority')->withDefault(Priority::NORMAL)->build(), Fb::create('sent', T\BooleanType::create())->build(), Fb::create('date_sent', T\DateTimeType::create())->build(), Fb::create('microtime_sent', T\MicrotimeType::create())->build(), Fb::create('provider', T\StringEnumType::create())->className('Gdbots\\Tests\\Pbj\\Fixtures\\Enum\\Provider')->withDefault(Provider::GMAIL())->build(), Fb::create('labels', T\StringType::create())->format(Format::HASHTAG())->asASet()->build(), Fb::create('nested', T\MessageType::create())->className('Gdbots\\Tests\\Pbj\\Fixtures\\NestedMessage')->build(), Fb::create('enum_in_set', T\StringEnumType::create())->className('Gdbots\\Tests\\Pbj\\Fixtures\\Enum\\Provider')->asASet()->build(), Fb::create('enum_in_list', T\StringEnumType::create())->className('Gdbots\\Tests\\Pbj\\Fixtures\\Enum\\Provider')->asAList()->build(), Fb::create('any_of_message', T\MessageType::create())->className('Gdbots\\Pbj\\Message')->asAList()->build(), Fb::create('dynamic_fields', T\DynamicFieldType::create())->asAList()->build()]); MessageResolver::registerSchema($schema); return $schema; }
/** * @return Schema */ protected static function defineSchema() { $schema = new Schema('pbj:gdbots:tests.pbj:fixtures:nested-message:1-0-0', __CLASS__, [Fb::create('test1', T\StringType::create())->build(), Fb::create('test2', T\IntType::create())->asASet()->build(), Fb::create('location', T\GeoPointType::create())->build(), Fb::create('refs', T\MessageRefType::create())->asASet()->build()]); MessageResolver::registerSchema($schema); return $schema; }