<bigwig> service: guestbook


service {
  schema Person {
    string name;
    int age;
  }
  
  protected shared relation tuple Person GuestBook ;
  
  html EnterPersonDoc = <html>
    Enter your name: <input type=text name="name"><br>
    Enter your age: <input type=text name="age"><br>
  </html>;
  html GuestBookDoc = <html>
    <h1>Guestbook</h1>
    <ul>
    <[guests]>
    </ul>
  </html>;
  html PersonDoc = <html>
    <li>Name: <[name]> (<[age]>).</li>
    <[guests]>
  </html>;
  
  session Show() {
    int i;
    html H = GuestBookDoc;
    vector tuple Person V;
    
    reader (GuestBook) V = (vector tuple Person)GuestBook;
    V = sort(V; name);
    for (i = 0 ; i < |V| ; i++) {
      H = H <[guests=PersonDoc <[name=V[i].name, age=V[i].age]];
    }
    exit H;
  }
  
  session Sign() {
    string name;
    int age;
    relation tuple Person P, R;
    int i;
    
    show EnterPersonDoc receive [name=name, age=age];
    writer (GuestBook) {
      GuestBook = (Union (GuestBook, relation { tuple { name=name, age=age } }));
    }
    Show();
  }
}