adamc@991: open Orm adamc@991: adamc@991: structure T = Table(struct adamc@991: val cols = {A = local [int] _, adamc@991: B = local [string] _} adamc@991: end) adamc@991: adamc@991: structure S = Table(struct adamc@991: val cols = {C = T.id, adamc@991: D = local [float] _} adamc@991: end) adamc@991: adamc@991: fun action () = adamc@991: r <- T.create {A = 3, B = "Hi"}; adamc@991: T.save (r -- #B ++ {B = "Bye"}); adamc@991: adamc@991: s <- S.create {C = r.Id, D = 45.67}; adamc@991: adamc@991: ls <- T.list; adamc@991: ls' <- T.search (T.eq T.cols.B.Col "Hi"); adamc@991: adamc@991: lsS <- S.list; adamc@991: lsS <- List.mapM (fn r => p <- S.cols.C.Parent r; return (r, p)) lsS; adamc@991: adamc@991: return adamc@991: {List.mapX (fn r =>
  • {[r.A]}: {[r.B]}
  • ) ls} adamc@991:
    adamc@991: {List.mapX (fn r =>
  • {[r.A]}: {[r.B]}
  • ) ls'} adamc@991:
    adamc@991: {List.mapX (fn (s, ro) =>
  • {[s.D]}: {case ro of adamc@991: None => No parent adamc@991: | Some r => {[r.B]}} adamc@991:
  • ) lsS} adamc@991:
    adamc@991: adamc@991: fun main () = return adamc@991:
    adamc@991: