adamc@1022: functor Make(M : Conference.INPUT) = struct adamc@1022: open M adamc@1022: adamc@1022: table bid : {User : userId, Paper : paperId, Interest : char} adamc@1022: PRIMARY KEY (User, Paper) adamc@1022: adamc@1022: table assignment : {User : userId, Paper : paperId} adamc@1022: PRIMARY KEY (User, Paper) adamc@1022: adamc@1022: val linksForPc = adamc@1022: let adamc@1023: fun yourBids () = adamc@1023: me <- getPcLogin; adamc@1023: ps <- queryX (SELECT paper.Id, paper.{{M.paper}}, bid.Interest adamc@1023: FROM paper LEFT JOIN bid ON bid.Paper = paper.Id adamc@1023: AND bid.User = {[me.Id]}) adamc@1023: (fn r => adamc@1023: adamc@1023: {useMore adamc@1023: {summarizePaper (r.Paper -- #Id)} adamc@1023: adamc@1023: {Select.selectChar ((#"-", "No") :: (#"_", "Maybe") :: (#"+", "Yes") :: []) adamc@1023: r.Bid.Interest} adamc@1023: adamc@1023: } adamc@1023: ); adamc@1023: return adamc@1023:

Bid on papers

adamc@1023: adamc@1023:
adamc@1023: adamc@1023: adamc@1023: {ps} adamc@1023:
Paper Your Bid
adamc@1023: adamc@1023: adamc@1023:
adamc@1023: adamc@1023: and changeBids r = adamc@1023: me <- getPcLogin; adamc@1023: List.app (fn {Paper = p, Bid = b} => adamc@1023: case b of adamc@1023: "" => return () adamc@1023: | _ => let adamc@1023: val p = readError p adamc@1023: in adamc@1023: (dml (DELETE FROM bid WHERE Paper = {[p]} AND User = {[me.Id]}); adamc@1023: dml (INSERT INTO bid (Paper, User, Interest) adamc@1023: VALUES ({[p]}, {[me.Id]}, {[String.sub b 0]}))) adamc@1023: end) r.Papers; adamc@1023: yourBids () adamc@1022: in adamc@1022: adamc@1023:
  • Bid on papers
  • adamc@1022:
    adamc@1022: end adamc@1022: adamc@1022: con yourPaperTables = [Assignment = _] adamc@1022: constraint [Paper] ~ yourPaperTables adamc@1022: fun joinYourPaper [tabs] [paper] [[Paper] ~ tabs] [[Paper] ~ _] [tabs ~ yourPaperTables] [[Id] ~ paper] adamc@1022: (fi : sql_from_items ([Paper = [Id = paperId] ++ paper] ++ tabs)) = adamc@1022: sql_inner_join fi (sql_from_table [#Assignment] assignment) (WHERE Paper.Id = Assignment.Paper) adamc@1022: end