75 lines
2.4 KiB
Lua
75 lines
2.4 KiB
Lua
-- ------------------------------------------------------------------------------ --
|
|
-- TradeSkillMaster --
|
|
-- https://tradeskillmaster.com --
|
|
-- All Rights Reserved - Detailed license information included with addon. --
|
|
-- ------------------------------------------------------------------------------ --
|
|
|
|
local _, TSM = ...
|
|
local Buyback = TSM.Vendoring:NewPackage("Buyback")
|
|
local Database = TSM.Include("Util.Database")
|
|
local Delay = TSM.Include("Util.Delay")
|
|
local Event = TSM.Include("Util.Event")
|
|
local ItemString = TSM.Include("Util.ItemString")
|
|
local ItemInfo = TSM.Include("Service.ItemInfo")
|
|
local private = {
|
|
buybackDB = nil,
|
|
}
|
|
|
|
|
|
|
|
-- ============================================================================
|
|
-- Module Functions
|
|
-- ============================================================================
|
|
|
|
function Buyback.OnInitialize()
|
|
private.buybackDB = Database.NewSchema("BUYBACK")
|
|
:AddUniqueNumberField("index")
|
|
:AddStringField("itemString")
|
|
:AddNumberField("price")
|
|
:AddNumberField("quantity")
|
|
:Commit()
|
|
Event.Register("MERCHANT_SHOW", private.MerchantShowEventHandler)
|
|
Event.Register("MERCHANT_CLOSED", private.MerchantClosedEventHandler)
|
|
Event.Register("MERCHANT_UPDATE", private.MerchantUpdateEventHandler)
|
|
end
|
|
|
|
function Buyback.CreateQuery()
|
|
return private.buybackDB:NewQuery()
|
|
:InnerJoin(ItemInfo.GetDBForJoin(), "itemString")
|
|
end
|
|
|
|
function Buyback.BuybackItem(index)
|
|
BuybackItem(index)
|
|
end
|
|
|
|
|
|
|
|
-- ============================================================================
|
|
-- Private Helper Functions
|
|
-- ============================================================================
|
|
|
|
function private.MerchantShowEventHandler()
|
|
Delay.AfterFrame("UPDATE_BUYBACK_DB", 1, private.UpdateBuybackDB)
|
|
end
|
|
|
|
function private.MerchantClosedEventHandler()
|
|
Delay.Cancel("UPDATE_BUYBACK_DB")
|
|
private.buybackDB:Truncate()
|
|
end
|
|
|
|
function private.MerchantUpdateEventHandler()
|
|
Delay.AfterFrame("UPDATE_BUYBACK_DB", 1, private.UpdateBuybackDB)
|
|
end
|
|
|
|
function private.UpdateBuybackDB()
|
|
private.buybackDB:TruncateAndBulkInsertStart()
|
|
for i = 1, GetNumBuybackItems() do
|
|
local itemString = ItemString.Get(GetBuybackItemLink(i))
|
|
if itemString then
|
|
local _, _, price, quantity = GetBuybackItemInfo(i)
|
|
private.buybackDB:BulkInsertNewRow(i, itemString, price, quantity)
|
|
end
|
|
end
|
|
private.buybackDB:BulkInsertEnd()
|
|
end
|