db_date.anubis 1.54 KB
/*
 * Created by 伝作 (Densaku).
 * Types & Messages generator written by フランスのトトロ aka (David RENÉ)
 * Date: 2017-02-15
 * Time: 02:18:49
 * 
 */

transmit system/muscle.anubis
transmit system/convert.anubis
transmit tools/basis.anubis


public type DB_date:
  db_date(
    String  date //Date and time in ISO8601 format "YYYY-MM-DD"
  )
.

  DB_date message format
  ======================


public define Message
  to_Message
  (
    DB_date _db_date
  )=
  with _db_date_message = message((Word32)0),  //
  forget(add_string(_db_date_message, "__TYPE__", "DB_date"));
  if _db_date is
  {
    //Alternative db_date
    db_date(_date) then 
      forget(add_string(_db_date_message, "__TYPE_ALT__", "db_date"));
      // [type = String] db_date.date
      forget(add_string(_db_date_message, "date", _date)),

  };
  _db_date_message
.

public define Maybe(DB_date)
  from_Message
  (
    Message _db_date_message
  )=
  if find_string(_db_date_message, "__TYPE__")     is  {failure then failure,  success(__type__)     then
  if find_string(_db_date_message, "__TYPE_ALT__") is  {failure then failure,  success(__type_alt__) then
    if __type__ = "DB_date" then 
      //Alternative db_date
      if __type_alt__ = "db_date" then //Alternative db_date
        // [type = String] db_date.date
        if find_string(_db_date_message, "date") is {failure then failure,  success(date) then

        success(db_date(date))
      }
      else 
        failure  //No valid Alternative found !
    else
      failure    //Type not found in message !
  }}
.