Fixed database ghosted unused-options bug
Fixed a problem where unused ticket options would stay in the options database in certain circumstances. Even when there is no ticket that uses the option anymore.
This commit is contained in:
@@ -1,7 +1 @@
|
|||||||
[
|
[]
|
||||||
{"category":"openticket:last-version","key":"openticket:version","value":"v4.0.0"},
|
|
||||||
{"category":"openticket:last-version","key":"openticket:api","value":"v1.0.0"},
|
|
||||||
{"category":"openticket:last-version","key":"openticket:transcripts","value":"v2.0.0"},
|
|
||||||
{"category":"openticket:last-version","key":"openticket:livestatus","value":"v2.0.0"},
|
|
||||||
{"category":"openticket:last-version","key":"openticket:last-version","value":"v4.0.0"}
|
|
||||||
]
|
|
||||||
@@ -133,13 +133,17 @@ export const loadDatabaseCleanersCode = async () => {
|
|||||||
}))
|
}))
|
||||||
|
|
||||||
//OPTION DATABASE CLEANER
|
//OPTION DATABASE CLEANER
|
||||||
openticket.code.add(new api.ODCode("openticket:option-database-cleaner",10,() => {
|
openticket.code.add(new api.ODCode("openticket:option-database-cleaner",10,async () => {
|
||||||
//delete all unused options (async)
|
//delete all unused options (async)
|
||||||
openticket.options.getAll().forEach(async (option) => {
|
for (const option of (await optionDatabase.getCategory("openticket:used-option") ?? [])){
|
||||||
if (await optionDatabase.exists("openticket:used-option",option.id.value) && !openticket.tickets.getAll().some((ticket) => ticket.option.id.value == option.id.value)){
|
if (!openticket.options.exists(option.key)){
|
||||||
await optionDatabase.delete("openticket:used-option",option.id.value)
|
//remove because option isn't loaded into memory (0 tickets require it)
|
||||||
|
await optionDatabase.delete("openticket:used-option",option.key)
|
||||||
|
}else if (!openticket.tickets.getAll().some((ticket) => ticket.option.id.value == option.key)){
|
||||||
|
//remove when loaded into memory (0 tickets require it)
|
||||||
|
await optionDatabase.delete("openticket:used-option",option.key)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
|
||||||
}))
|
}))
|
||||||
|
|
||||||
//USER DATABASE CLEANER (full async/parallel because it takes a lot of time)
|
//USER DATABASE CLEANER (full async/parallel because it takes a lot of time)
|
||||||
|
|||||||
Reference in New Issue
Block a user