class EndpointStorageItem {}
class EndpointStorage {
constructor() {
this.init_database();
this.render_endpoint_and_api_key_items();
}
init_database() {
this.db = new Dexie("endpoints");
this.db.version(1).stores({
endpoints: "index, endpoint, api_key",
default_model: "model",
});
this.db.endpoints.count((count) => {
console.log(`${count} endpoints loaded.`);
});
}
clear_database() {
this.db.endpoints.clear();
console.log("endpoints cleared.");
}
get_endpoint_and_api_key_item_html() {
let endpoint_and_api_key_item_html = `
`;
return endpoint_and_api_key_item_html;
}
add_endpoint_and_api_key_item() {
let endpoint_and_api_key_items = $("#endpoint-and-api-key-items");
endpoint_and_api_key_items.prepend(
this.get_endpoint_and_api_key_item_html()
);
this.bind_endpoint_and_api_key_buttons();
}
create_endpoint_and_api_key_items() {
let endpoint_and_api_key_items = $("#endpoint-and-api-key-items");
let endpoints = this.db.endpoints;
endpoint_and_api_key_items.empty();
endpoints.each((row) => {
let endpoint_and_api_key_item_html =
this.get_endpoint_and_api_key_item_html();
let endpoint_and_api_key_item = $(endpoint_and_api_key_item_html);
let endpoint_input =
endpoint_and_api_key_item.find(".endpoint-input");
endpoint_input.val(row.endpoint);
let api_key_input =
endpoint_and_api_key_item.find(".api-key-input");
api_key_input.val(row.api_key);
endpoint_and_api_key_items.prepend(endpoint_and_api_key_item);
});
}
bind_endpoint_and_api_key_buttons() {
let endpoint_submit_buttons = $(".endpoint-submit-button");
let self = this;
endpoint_submit_buttons.click(function () {
let endpoint_input = $(this)
.parent()
.parent()
.find(".endpoint-input");
let endpoint_input_value = endpoint_input.val().trim();
let api_key_input = $(this)
.parent()
.parent()
.find(".api-key-input");
let api_key_input_value = api_key_input.val().trim();
if (endpoint_input_value === "") {
console.log("Endpoint is empty.");
return;
} else {
self.db.endpoints.put({
index: endpoint_input_value,
endpoint: endpoint_input_value,
api_key: api_key_input_value,
});
console.log(`new_endpoint: ${endpoint_input_value}`);
}
});
}
render_endpoint_and_api_key_items() {
this.create_endpoint_and_api_key_items();
this.bind_endpoint_and_api_key_buttons();
}
}
export let endpoint_storage = new EndpointStorage();