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: fun isOnPc id = adamc@1022: ro <- oneOrNoRows1 (SELECT user.OnPc adamc@1022: FROM user adamc@1022: WHERE user.Id = {[id]}); adamc@1022: return (case ro of adamc@1022: None => False adamc@1022: | Some r => r.OnPc) adamc@1022: adamc@1022: val linksForPc = adamc@1022: let adamc@1022: fun bid () = adamc@1022: me <- getLogin; adamc@1022: return Bidding time! adamc@1022: in adamc@1022: adamc@1022:
  • 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