jbe/bsw@0: Medium = mondelefant.new_class() jbe/bsw@0: Medium.table = 'medium' jbe/bsw@0: jbe/bsw@0: Medium:add_reference{ jbe/bsw@0: mode = 'm1', -- many (m) Medium entries can refer to one (1) MediaType jbe/bsw@0: to = "MediaType", -- name of referenced model (quoting avoids auto-loading here) jbe/bsw@0: this_key = 'media_type_id', -- own key in medium table jbe/bsw@0: that_key = 'id', -- other key in media_type table jbe/bsw@0: ref = 'media_type', -- name of reference jbe/bsw@0: back_ref = nil, -- not used for m1 relation! jbe/bsw@0: default_order = nil -- not used for m1 relation! jbe/bsw@0: } jbe/bsw@0: jbe/bsw@0: Medium:add_reference{ jbe/bsw@0: mode = '1m', -- one (1) Medium has many (m) Classifications jbe/bsw@0: to = "Classification", -- name of referenced model (quoting avoids auto-loading here) jbe/bsw@0: this_key = 'id', -- own key in medium table jbe/bsw@0: that_key = 'medium_id', -- other key in classification table jbe/bsw@0: ref = 'classifications', -- name of reference jbe/bsw@0: back_ref = 'medium', -- each autoloaded classification automatically refers back to the Medium jbe/bsw@0: default_order = '"genre_id"' -- order classifications by SQL expression "genre_id" jbe/bsw@0: } jbe/bsw@0: jbe/bsw@0: Medium:add_reference{ jbe/bsw@0: mode = 'mm', -- many (m) Media belong to many (m) Genres jbe/bsw@0: to = "Genre", -- name of referenced model (quoting avoids auto-loading here) jbe/bsw@0: this_key = 'id', -- (primary) key of medium table jbe/bsw@0: that_key = 'id', -- (primary) key of genre talbe jbe/bsw@0: connected_by_table = 'classification', -- table connecting media with genres jbe/bsw@0: connected_by_this_key = 'medium_id', -- key in classification table referencing media jbe/bsw@0: connected_by_that_key = 'genre_id', -- key in classification table referencing genres jbe/bsw@0: ref = 'genres', -- name of reference jbe/bsw@0: back_ref = nil, -- not used for mm relation! jbe/bsw@0: default_order = '"genre"."name", "genre"."id"' -- mm references need qualified names in SQL order expression! jbe/bsw@0: } jbe/bsw@0: jbe/bsw@0: Medium:add_reference{ jbe/bsw@0: mode = '1m', -- one (1) Medium has many (m) Tracks jbe/bsw@0: to = "Track", -- name of referenced model (quoting avoids auto-loading here) jbe/bsw@0: this_key = 'id', -- own key in medium table jbe/bsw@0: that_key = 'medium_id', -- other key in track table jbe/bsw@0: ref = 'tracks', -- name of reference jbe/bsw@0: back_ref = 'medium', -- each autoloaded classification automatically refers back to the Medium jbe/bsw@0: default_order = '"position"' -- order tracks by SQL expression "position" jbe/bsw@0: }