LogEntryObject:
TYPE =
RECORD[
SELECT type: *
FROM
StateChange => [event: FingerOps.StateChange, user: Rope.ROPE, time: BasicTime.GMT, machine: Rope.ROPE],
UserPropChange => [user, name, val: Rope.ROPE, time: BasicTime.GMT],
user property changes are actually recorded in the database only if they occurred after the time of the last update recorded (ie., they aren't stale)
MachinePropChange => [machine, name, val: Rope.ROPE],
machine property changes are always performed
AddMachineProp => [name: Rope.ROPE, version: INT],
for property changes, we record the version number of the properties for a machine or person; if the version number of the change is not consistent with the current version number in the database, then the change is not performed
AddUserProp => [name: Rope.ROPE, version: INT],
DeleteUserProp => [name: Rope.ROPE, version: INT],
DeleteMachineProp => [name: Rope.ROPE, version: INT],
Nothing => []
ENDCASE ] ← [Nothing[]]; -- to keep Lupine happy