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@992: r1 <- T.create {A = 3, B = "Hi"}; adamc@992: T.save (r1 -- #B ++ {B = "Bye"}); adamc@992: r2 <- T.create {A = 4, B = "Why"}; adamc@992: r3 <- T.create {A = 66, B = "Hi"}; adamc@991: adamc@992: s <- S.create {C = r1.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@992: T.delete r1; adamc@992: T.delete r2; adamc@992: T.delete r3; adamc@992: adamc@992: S.delete s; adamc@992: 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: