Fixed issue: Old domains not being removed on refresh

This commit is contained in:
2024-08-15 22:10:15 -04:00
parent c418dd39a8
commit 6e168b12b3
+23 -30
View File
@@ -32,19 +32,7 @@ class Domain extends Table{
domain = tldExtract(domain).domain; domain = tldExtract(domain).domain;
}catch{} }catch{}
let instance = await super.get(domain, ...args); return await super.get(domain, ...args);
return instance;
}
static async getByProviderId(id, ...args){
let domains = await this.listDetail(...args);
let results = [];
for(let domain of domains){
if(domain.dnsProvider_id == id) results.push(domain);
}
return results;
} }
async getRecords(...args){ async getRecords(...args){
@@ -60,7 +48,7 @@ class Domain extends Table{
} }
} }
Domain.register(ModelPs(Domain)) Domain.register(ModelPs(Domain));
class DnsProvider extends Table{ class DnsProvider extends Table{
static _key = 'id'; static _key = 'id';
@@ -83,16 +71,12 @@ class DnsProvider extends Table{
let Provider = providers[provider]; let Provider = providers[provider];
let _keyMap = {...this._keyMap, ...Provider._keyMap}; let _keyMap = {...this._keyMap, ...Provider._keyMap};
let cls = ({ return ({
[this.name] : class extends this { [this.name] : class extends this {
static _keyMap = _keyMap; static _keyMap = _keyMap;
static Provider = Provider; static Provider = Provider;
} }
})[this.name]; })[this.name];
Object.assign(cls.prototype, Provider)
return cls
} }
static async create(data, ...args){ static async create(data, ...args){
@@ -133,9 +117,6 @@ class DnsProvider extends Table{
for(let provider in providers){ for(let provider in providers){
out.push({ out.push({
name: provider, name: provider,
displayName: providers[provider].displayName || provider,
displayIconUni: providers[provider].displayIconUni || '?',
displayIconHtml: providers[provider].displayIconHtml || '<i class="fa-solid fa-question"></i>',
fields: providers[provider]._keyMap, fields: providers[provider]._keyMap,
}); });
} }
@@ -147,20 +128,32 @@ class DnsProvider extends Table{
} }
async listDomains(){ async listDomains(){
return this.api.listDomains() return this.api.listDomains();
} }
async updateDomains(domains){ async updateDomains(domains){
domains = domains || await this.listDomains(); domains = domains || await this.listDomains();
let currentDomains = this.domains.map(domain => domain.domain);
for(let domain of domains){ for(let domain of domains){
if(!(await Domain.exists(domain.domain))){ if(currentDomains.includes(domain.domain)){
await Domain.create({ delete currentDomains[currentDomains.indexOf(domain.domain)];
created_by: this.created_by, continue;
domain: domain.domain,
dnsProvider_id: this.id,
zoneId: domain.zoneId,
});
} }
await Domain.create({
created_by: this.created_by,
domain: domain.domain,
dnsProvider_id: this.id,
zoneId: domain.zoneId,
});
}
console.log('currentDomains:', currentDomains)
for(let domain of currentDomains){
if(!domain) continue
domain = await Domain.get(domain);
await domain.remove();
} }
} }