renderers:
  - udraft/renderers/dart@unit-tests
pipelines:
  main:
    - cd: projects/server/
    - ts@classes:
        includeModuleDir: false
    - ts@validators:
        $where: (mod, model) => !model.$attribute('schema')
    - dart@unit-tests:
draft:
  /name: Awesome Project
  /description: This is an awesome project.
  account:
    ~account-roles:
      ADMIN: admin
      READ: read
      CREATE: create
      UPDATE: update
    +timestamps:
      createdAt[date]:
        - required
      updatedAt[date]:
        - required(false)
    +account(timestamps):
      /schema: accountss
      _id[string]:
        - required(false)
      name[string]:
        - required
        - notEmpty
      passwordHash[string]:
        - notEmpty
      email[string]:
        - unique
        - notEmpty
        - regex(/.+@.+\..+/)
      roles[account-roles]:
        - array
    +account-response-dto(account):
      $remove:
        - _id
        - passwordHash
      $pick(account):
        - _id > id
    /http:
      url: /account
    signup:
      /http:
        method: post
        url: /signup/{id}
        params:
          id: email
        noBody: true
      input:
        +create-account-dto:
          $pick(account):
            - name
            - email
            - passwordHash > password
      output:
        +create-account-response-dto:
          success[boolean]:
            - required
          account[account-response-dto]:
            - required(false)
    signout:
      /http:
        method: post
        url: /signout
      output: account-response-dto
  vehicle:
    +vehicle(timestamps):
      /schema: vehicles
      owner[&account]:
        - required
      make[string]:
        - required
        - notEmpty
      model[string]:
        - required
        - notEmpty
      year[int]:
        - required
        - min(1900)
        - max(2020)
    +vehicle-response-dto(vehicle):
      ownerData[account-response-dto]:
        - array
