local Item = Rarity.Item local DatabaseSchema = {} function DatabaseSchema:IsValidItem(entry) if not Item:HasAllRequiredFields(entry) then Rarity:Print("Required fields are missing") return false end if not Item:IsPersonalLoot(entry) then Rarity:Print("Personal loot settings are inconsistent") return false end if not Item:HasOnlyValidFields(entry) then Rarity:Print("Unsupported fields are set") return false end if Item:IsHolidayItem(entry) and not Item:IsValidHolidayItem(entry) then Rarity:Print("Holiday event settings are inconsistent") return false end if not Item:IsHolidayItem(entry) and Item:IsUsingHolidayProperties(entry) then Rarity:Print("Found item using holiday properties, but it's not a holiday item") return false end if Item:IsCollectionItem(entry) and not Item:IsValidCollectionItem(entry) then Rarity:Print("Item is using Collection method, but the collectedItemId is not set correctly") return false end if Item:IsArchaeologyItem(entry) and not Item:IsValidArchaeologyItem(entry) then Rarity:Print("Archaeology settings are inconsistent") return false end if Item:HasUseMethod(entry) and not Item:IsValidUseMethodItem(entry) then Rarity:Print("Found item with use method, but the containers (field:items) are not set or are invalid.") return false end if Item:IsCovenantSpecificItem(entry) and not Item:IsValidCovenantItem(entry) then Rarity:Print("Covenant settings are inconsistent") return false end if Item:IsZoneItem(entry) and not Item:IsValidZoneItem(entry) then Rarity:Print("Item is using method for 'any mob in a zone' detection, but the Zones are not set correctly") return false end if Item:IsFishingItem(entry) and not Item:IsValidFishingItem(entry) then Rarity:Print("Found Fishing item, but the Zones to track in are not set correctly") return false end if Item:HasNPCMethod(entry) and not Item:IsValidNPCItem(entry) then Rarity:Print("Found item using NPC method, but the list of NPCs to track is invalid") return false end if Item:HasBossMethod(entry) and not Item:IsValidNPCItem(entry) then Rarity:Print("Found item using BOSS method, but the list of NPCs to track is invalid") return false end if Item:HasWaypointData(entry) and not Item:HasValidWaypoints(entry) then Rarity:Print("Waypoint data is inconsistent") return false end if not Item:HasWaypointData(entry) then Rarity:Print("Waypoint (zone) data is missing") return false end return true end function DatabaseSchema:IsValidPet(entry) if not Item:IsPet(entry) then Rarity:Print("Item is not of type PET") return false end if not entry.spellId then Rarity:Print("Expected field spellId is missing") return false end if not entry.creatureId then Rarity:Print("Expected field creatureId is missing") return false end return true end function DatabaseSchema:IsValidMount(entry) if not Item:IsMount(entry) then Rarity:Print("Item is not of type MOUNT") return false end if not entry.spellId then Rarity:Print("Expected field spellId is missing") return false end return true end Rarity.DatabaseSchema = DatabaseSchema