Skip to content

Repository files navigation

Datory

Gem versionRelease Date

Documentation

See datory.servactory.com for documentation.

Quick Start

Installation

gem"datory"

Usage

Serialize

serial=Serial.find(id)SerialDto.serialize(serial)# => { ... }

Deserialize

SerialDto.deserialize(json)# => Datory::Result

Form

For serialization, the form method is also available. This prepares a Form object, which has a set of additional methods such as valid? and invalid?.

form=SerialDto.form(serial)form.target# => SerialDtoform.model# => { ... }form.valid?# => trueform.invalid?# => falseform.serialize# => { ... }

Examples

classSerialDto < Datory::Baseuuid!:idstring!:statusstring!:titleone!:poster,include: ImageDtoone!:ratings,include: RatingsDtomany!:countries,include: CountryDtomany!:genres,include: GenreDtomany!:seasons,include: SeasonDtodate!:premieredOn,to: :premiered_onend
classSeasonDto < Datory::Baseuuid!:iduuid!:serialId,to: :serial_idinteger!:numbermany!:episodes,include: EpisodeDtodate!:premieredOn,to: :premiered_ondate?:endedOn,to: :ended_onend

Attribute declaration

Using the ! sign means that the attribute is required. The optionality of an attribute is indicated using the ? sign.

Basic

attribute

attribute:uuid,from: String,to: :id,as: String,format: :uuid

string!

string!:uuid,to: :id

integer!

integer!:rating,min: 1,max: 10

float!

float!:rating

boolean!

boolean!:default

Helpers

uuid!

It will also check that the value matches the UUID format.

uuid!:id

money!

It will prepare two attributes *_cents and *_currency.

money!:box_office

duration!

duration!:episode_duration

date!

date!:premiered_on

time!

time!:premiered_at

datetime!

datetime!:premiered_at

Nesting

one!

one!:poster,include: ImageDto

many!

many!:seasons,include: SeasonDto

Object information

Info

SerialDto.info
#<Datory::Info::Result:0x0000000128a33c38 @attributes={:id=>{:from=>{:name=>:id, :type=>String, :min=>nil, :max=>nil, :consists_of=>false, :format=>:uuid}, :to=>{:name=>:id, :type=>String, :min=>nil, :max=>nil, :consists_of=>false, :format=>:uuid, :required=>true, :default=>nil, :include=>nil}}, :status=>{:from=>{:name=>:status, :type=>String, :min=>nil, :max=>nil, :consists_of=>false, :format=>nil}, :to=>{:name=>:status, :type=>String, :min=>nil, :max=>nil, :consists_of=>false, :format=>nil, :required=>true, :default=>nil, :include=>nil}}, :title=>{:from=>{:name=>:title, :type=>String, :min=>nil, :max=>nil, :consists_of=>false, :format=>nil}, :to=>{:name=>:title, :type=>String, :min=>nil, :max=>nil, :consists_of=>false, :format=>nil, :required=>true, :default=>nil, :include=>nil}}, :poster=>{:from=>{:name=>:poster, :type=>[Usual::Example1::Image, Hash], :min=>nil, :max=>nil, :consists_of=>false, :format=>nil}, :to=>{:name=>:poster, :type=>[Usual::Example1::Image, Hash], :min=>nil, :max=>nil, :consists_of=>false, :format=>nil, :required=>true, :default=>nil, :include=>Usual::Example1::Image}}, :ratings=>{:from=>{:name=>:ratings, :type=>[Usual::Example1::Ratings, Hash], :min=>nil, :max=>nil, :consists_of=>false, :format=>nil}, :to=>{:name=>:ratings, :type=>[Usual::Example1::Ratings, Hash], :min=>nil, :max=>nil, :consists_of=>false, :format=>nil, :required=>true, :default=>nil, :include=>Usual::Example1::Ratings}}, :countries=>{:from=>{:name=>:countries, :type=>Array, :min=>nil, :max=>nil, :consists_of=>[Usual::Example1::Country, Hash], :format=>nil}, :to=>{:name=>:countries, :type=>Array, :min=>nil, :max=>nil, :consists_of=>[Usual::Example1::Country, Hash], :format=>nil, :required=>true, :default=>nil, :include=>Usual::Example1::Country}}, :genres=>{:from=>{:name=>:genres, :type=>Array, :min=>nil, :max=>nil, :consists_of=>[Usual::Example1::Genre, Hash], :format=>nil}, :to=>{:name=>:genres, :type=>Array, :min=>nil, :max=>nil, :consists_of=>[Usual::Example1::Genre, Hash], :format=>nil, :required=>true, :default=>nil, :include=>Usual::Example1::Genre}}, :seasons=>{:from=>{:name=>:seasons, :type=>Array, :min=>nil, :max=>nil, :consists_of=>[Usual::Example1::Season, Hash], :format=>nil}, :to=>{:name=>:seasons, :type=>Array, :min=>nil, :max=>nil, :consists_of=>[Usual::Example1::Season, Hash], :format=>nil, :required=>true, :default=>nil, :include=>Usual::Example1::Season}}, :premieredOn=>{:from=>{:name=>:premieredOn, :type=>String, :min=>nil, :max=>nil, :consists_of=>false, :format=>:date}, :to=>{:name=>:premiered_on, :type=>Date, :min=>nil, :max=>nil, :consists_of=>false, :format=>nil, :required=>true, :default=>nil, :include=>nil}}}>

Describe

Alias: table

SerialDto.describe
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| SerialDto |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Attribute | From | To | As | Include |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| id | String | id | String | |
| status | String | status | String | |
| title | String | title | String | |
| poster | [ImageDto, Hash] | poster | [ImageDto, Hash] | ImageDto | |
| ratings | [RatingsDto, Hash] | ratings | [RatingsDto, Hash] | RatingsDto | |
| countries | Array | countries | Array | CountryDto |
| genres | Array | genres | Array | GenreDto |
| seasons | Array | seasons | Array | SeasonDto |
| premieredOn | String | premiered_on | Date | |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Contributing

This project is intended to be a safe, welcoming space for collaboration. Contributors are expected to adhere to the Contributor Covenant code of conduct. We recommend reading the contributing guide as well.

License

Datory is available as open source under the terms of the MIT License.

About

Ruby serializer and deserializer

Topics

Resources

Code of conduct

Contributing

Stars

3 stars

Watchers

2 watching

Forks

Releases

Used by

Contributors

Languages