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