db_time.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_time:
  db_time(
    String  time //Date and time in ISO8601 format "hh:mm:ss"
  )
.

  DB_time message format
  ======================


public define Message
  to_Message
  (
    DB_time _db_time
  )=
  with _db_time_message = message((Word32)0),  //
  forget(add_string(_db_time_message, "__TYPE__", "DB_time"));
  if _db_time is
  {
    //Alternative db_time
    db_time(_time) then 
      forget(add_string(_db_time_message, "__TYPE_ALT__", "db_time"));
      // [type = String] db_time.time
      forget(add_string(_db_time_message, "time", _time)),

  };
  _db_time_message
.

public define Maybe(DB_time)
  from_Message
  (
    Message _db_time_message
  )=
  if find_string(_db_time_message, "__TYPE__")     is  {failure then failure,  success(__type__)     then
  if find_string(_db_time_message, "__TYPE_ALT__") is  {failure then failure,  success(__type_alt__) then
    if __type__ = "DB_time" then 
      //Alternative db_time
      if __type_alt__ = "db_time" then //Alternative db_time
        // [type = String] db_time.time
        if find_string(_db_time_message, "time") is {failure then failure,  success(time) then

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