channel Signup { out accounts(acDB:Map, signUp(aid:Str, name:Str)) = insert(acDB, aid, {"name": name}) } channel ChangeName(aid:Str) { out accounts.{aid}.name(prevName:Str, changeName(name)) = name } channel CreateRoom { out rooms(rmDB:Map, createRoom(rid:Str, blueId:Str, redId:Str)) = insert(rmDB, rid, {"blue_id": blueId, "red_id": redId}) } channel ChangeRedId(rid:Str) { out rooms.{rid}.red_id(prevRedId:Str, changeRedId(redId)) = redId } channel ChangeBlueId(rid:Str) { out rooms.{rid}.blue_id(prevBlueId:Str, changeBlueId(blueId)) = blueId } channel UpdateRedName(rid:Str) { in rooms.{rid}.red_id(prevAid:Str, updateRedName(aid, name)) = aid in accounts.{aid}.name(prevName:Str, updateRedName(aid, name)) = name out rooms.{rid}.red_name(prevName:Str, updateRedName(aid, name)) = name } channel UpdateBlueName(rid:Str) { in rooms.{rid}.blue_id(prevAid:Str, updateBlueName(aid, name)) = aid in accounts.{aid}.name(prevName:Str, updateBlueName(aid, name)) = name out rooms.{rid}.blue_name(prevName:Str, updateBlueName(aid, name)) = name }