bsw/jbe@0: Contact = mondelefant.new_class() bsw/jbe@0: Contact.table = 'contact' bsw/jbe@0: Contact.primary_key = { "member_id", "other_member_id" } bsw/jbe@0: bsw/jbe@0: Contact:add_reference{ bsw/jbe@0: mode = 'm1', bsw/jbe@0: to = "Member", bsw/jbe@0: this_key = 'member_id', bsw/jbe@0: that_key = 'id', bsw/jbe@0: ref = 'member', bsw/jbe@0: } bsw/jbe@0: bsw/jbe@0: Contact:add_reference{ bsw/jbe@0: mode = 'm1', bsw/jbe@0: to = "Member", bsw/jbe@0: this_key = 'other_member_id', bsw/jbe@0: that_key = 'id', bsw/jbe@0: ref = 'other_member', bsw/jbe@0: } bsw/jbe@0: bsw/jbe@0: bsw/jbe@0: function Contact:by_pk(member_id, other_member_id) bsw/jbe@0: return self:new_selector() bsw/jbe@0: :add_where{ "member_id = ?", member_id } bsw/jbe@0: :add_where{ "other_member_id = ?", other_member_id } bsw/jbe@0: :optional_object_mode() bsw/jbe@0: :exec() bsw/jbe@0: end bsw@198: bsw@198: function Contact:build_selector(args) bsw@198: local selector = Contact:new_selector() bsw@597: selector:join("member", nil, "member.id = contact.other_member_id") bsw@198: if args.member_id then bsw@198: selector:add_where{ "member_id = ?", args.member_id } bsw@198: end bsw@1045: if args.public ~= nil then bsw@1045: selector:add_where{ "public = ?", args.public } bsw@1045: end bsw@597: if args.order then bsw@597: if args.order == "name" then bsw@597: selector:add_order_by("member.name") bsw@198: else bsw@198: error("invalid order") bsw@198: end bsw@198: end bsw@198: return selector bsw@198: end