diff --git a/frontend/src/pages/Jobs.vue b/frontend/src/pages/Jobs.vue
index c3652347..210590b0 100644
--- a/frontend/src/pages/Jobs.vue
+++ b/frontend/src/pages/Jobs.vue
@@ -35,7 +35,8 @@
{
}
const getJobCount = () => {
- call('frappe.client.get_count', {
+ call('lms.lms.api.get_count', {
doctype: 'Job Opportunity',
filters: {
status: 'Open',
diff --git a/frontend/tsconfig.json b/frontend/tsconfig.json
new file mode 100644
index 00000000..e06cd129
--- /dev/null
+++ b/frontend/tsconfig.json
@@ -0,0 +1,20 @@
+{
+ "compilerOptions": {
+ "target": "ESNext",
+ "useDefineForClassFields": true,
+ "module": "ESNext",
+ "moduleResolution": "Node",
+ "strict": true,
+ "jsx": "preserve",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "esModuleInterop": true,
+ "lib": ["ESNext", "DOM"],
+ "baseUrl": ".",
+ "paths": {
+ "@/*": ["src/*"]
+ }
+ },
+ "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"],
+ "references": [{ "path": "./tsconfig.node.json" }]
+}
diff --git a/frontend/tsconfig.node.json b/frontend/tsconfig.node.json
new file mode 100644
index 00000000..099658cf
--- /dev/null
+++ b/frontend/tsconfig.node.json
@@ -0,0 +1,10 @@
+{
+ "compilerOptions": {
+ "composite": true,
+ "skipLibCheck": true,
+ "module": "ESNext",
+ "moduleResolution": "bundler",
+ "allowSyntheticDefaultImports": true
+ },
+ "include": ["vite.config.ts"]
+}
\ No newline at end of file
diff --git a/lms/lms/api.py b/lms/lms/api.py
index 33729855..7e540a4d 100644
--- a/lms/lms/api.py
+++ b/lms/lms/api.py
@@ -838,6 +838,14 @@ def delete_documents(doctype, documents):
frappe.delete_doc(doctype, doc)
+@frappe.whitelist(allow_guest=True)
+def get_count(doctype, filters):
+ return frappe.db.count(
+ doctype,
+ filters=filters,
+ )
+
+
@frappe.whitelist()
def get_payment_gateway_details(payment_gateway):
fields = []