# INNER JOIN tblInventoryID AS iid ON iid.intInventoryIdID = rc.intInventoryIDID # INNER JOIN tblInventory AS iv ON iid.intInventoryID = iv.intInventoryID # INNER JOIN tblInventoryText AS ivt ON iv.intInventoryID = ivt.intInventoryID module Toolhound # Class to parse GitHub repository owner and name from # URLs and to generate URLs class Inventory < Base # attr_accessor :owner, :name, :id # self.table_name = "tblInventory" # self.primary_key = "intInventoryID" def default_selects selects = { inventory: ["intInventoryID", "intCategoryID", "intSubCategoryID", "intManufacturerID", "intVendorID", "dteCreatedDate", "dteModifiedDate"], inventory_text: ["varPartNo", "varDescription", "txtNotes", {varUserField1: "varGlRevenue"}, {varUserField2: "varGlCOGSCode"}, {varUserField3: "varPhaseCode"}], unit_of_measure_text: ["varUnitOfMeasure"], category: ["varCategory"], sub_category: ["varCategory"] } end def default_joins arr = [] arr << "INNER JOIN tblInventoryType ON tblInventory.intInventoryTypeID = tblInventoryType.intInventoryTypeID" arr << "INNER JOIN tblInventoryText ON (tblInventoryText.intInventoryID = tblInventory.intInventoryID AND tblInventoryText.varLocaleID = '#{locale}')" arr << "LEFT OUTER JOIN tblUnitOfMeasureText ON (tblUnitOfMeasureText.intUofMID = tblInventory.intUofMID )" arr << "LEFT OUTER JOIN tblCategoryText AS tblCategory ON (tblCategory.intCategoryID = tblInventory.intCategoryID AND tblCategory.varLocaleID = '#{locale}')" arr << "LEFT OUTER JOIN tblCategoryText AS tblSubCategory ON (tblSubCategory.intCategoryID = tblInventory.intSubCategoryID AND tblSubCategory.varLocaleID = '#{locale}')" end def default_wheres [{bolIsActive: 1}, {bolDeleted: 0}] end # include_selects tblInventoryText: [:varPartNo, :varDescription, :txtNotes ], # tblInventory: [:intInventoryID, :intCategoryID] # def selects # arr = build_selects(selects) # # arr.join(", ") # end # def joins # # LEFT OUTER JOIN tblInventoryID ON tblInventoryID.intInventoryID = tblInventory.intInventoryID # [ # {type: :inner, table: :inventory_type, on: "intInventoryTypeID"}, # {type: :inner, table: :inventory_text, on: ["intInventoryTypeID", varLocaleID: locale]}, # {type: :left_outer, table: :unit_of_measure_text, on: "intUofMID"}, # {type: :left_outer, table: :category_text, on: ["intUofMID", varLocaleID: locale], as: :category}, # # ] # arr.join(" ") # end def build_join(join) join_types = { inner: "INNER JOIN", left: "LEFT OUTER JOIN", left_outer: "LEFT OUTER JOIN", left_inner: "LEFT INNER JOIN", right: "RIGHT OUTER JOIN", right_outer: "RIGHT OUTER JOIN", right_inner: "RIGHT INNER JOIN", } type = join_types[join[:type] || :inner] table = formatted_table_name(join[:table]) table_str = "#{table} " if join[:as] table = formatted_table_name(join[:as]) table_str += "AS #{table} " end on = join[:on] case on.class.to_s when "String" end # on_str = on ? "ON #{on}" : "" "#{type} #{table_str} #{on_str}" end # includes :tblInventoryText, # rename_attributes intLocationID: 'location_id' end end