[WIP] making a working demo for all possible seekers questions
This commit is contained in:
101
demo.js
Normal file
101
demo.js
Normal file
@@ -0,0 +1,101 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
// Demo script showing different ODMDB query types with real data
|
||||
import fs from "node:fs";
|
||||
|
||||
console.log("🚀 ODMDB NL to Query Demo");
|
||||
console.log("=".repeat(50));
|
||||
|
||||
// Sample queries to demonstrate
|
||||
const queries = [
|
||||
{
|
||||
nl: "show me seekers with status startasap and their email and experience",
|
||||
description: "Status-based filtering with field selection",
|
||||
expectedCondition: "idx.seekstatus_alias(startasap)",
|
||||
expectedFields: ["email", "seekworkingyear"],
|
||||
},
|
||||
{
|
||||
nl: "find seekers looking for jobs urgently with salary expectations",
|
||||
description: "Status synonym mapping + salary field",
|
||||
expectedCondition: "idx.seekstatus_alias(startasap)",
|
||||
expectedFields: ["salaryexpectation", "salaryunit"],
|
||||
},
|
||||
{
|
||||
nl: "give me seekers from last month with their locations",
|
||||
description: "Date-based filtering + location fields",
|
||||
expectedCondition: "prop.dt_create(>=:2025-09-14)",
|
||||
expectedFields: ["seeklocation"],
|
||||
},
|
||||
];
|
||||
|
||||
console.log("📋 Demo Queries:");
|
||||
queries.forEach((query, i) => {
|
||||
console.log(`\n${i + 1}. "${query.nl}"`);
|
||||
console.log(` Purpose: ${query.description}`);
|
||||
console.log(` Expected DSL: ${query.expectedCondition}`);
|
||||
console.log(` Expected Fields: ${query.expectedFields.join(", ")}`);
|
||||
});
|
||||
|
||||
console.log("\n💡 To test these queries:");
|
||||
console.log("1. Edit the NL_QUERY constant in poc.js");
|
||||
console.log("2. Run: EXECUTE_QUERY=true npm start");
|
||||
|
||||
console.log("\n📊 Current ODMDB Status:");
|
||||
|
||||
// Check if ODMDB data is accessible
|
||||
const seekersPath = "../smatchitObjectOdmdb/objects/seekers/itm";
|
||||
try {
|
||||
if (fs.existsSync(seekersPath)) {
|
||||
const files = fs
|
||||
.readdirSync(seekersPath)
|
||||
.filter((f) => f.endsWith(".json") && f !== "backup");
|
||||
console.log(`✅ Found ${files.length} seeker files in ${seekersPath}`);
|
||||
|
||||
// Sample a few files to show data types
|
||||
const sampleFile = files[0];
|
||||
const sampleData = JSON.parse(
|
||||
fs.readFileSync(`${seekersPath}/${sampleFile}`, "utf-8")
|
||||
);
|
||||
console.log(`📄 Sample seeker data (${sampleFile}):`);
|
||||
console.log(` - alias: ${sampleData.alias}`);
|
||||
console.log(` - email: ${sampleData.email}`);
|
||||
console.log(` - seekstatus: ${sampleData.seekstatus}`);
|
||||
console.log(` - seekworkingyear: ${sampleData.seekworkingyear}`);
|
||||
console.log(` - dt_create: ${sampleData.dt_create}`);
|
||||
} else {
|
||||
console.log(`❌ ODMDB data not found at ${seekersPath}`);
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(`❌ Error accessing ODMDB data: ${error.message}`);
|
||||
}
|
||||
|
||||
const schemaPath = "../smatchitObjectOdmdb/schema/seekers.json";
|
||||
try {
|
||||
if (fs.existsSync(schemaPath)) {
|
||||
const schema = JSON.parse(fs.readFileSync(schemaPath, "utf-8"));
|
||||
const fieldCount = Object.keys(schema.properties || {}).length;
|
||||
console.log(`✅ Loaded seekers schema with ${fieldCount} properties`);
|
||||
|
||||
// Show access rights info
|
||||
if (schema.apxaccessrights?.recruiters?.R) {
|
||||
console.log(
|
||||
`📋 Recruiter-readable fields: ${schema.apxaccessrights.recruiters.R.slice(
|
||||
0,
|
||||
5
|
||||
).join(", ")}... (${schema.apxaccessrights.recruiters.R.length} total)`
|
||||
);
|
||||
}
|
||||
|
||||
// Show available indexes
|
||||
if (schema.apxidx) {
|
||||
const indexes = schema.apxidx.map((idx) => idx.name);
|
||||
console.log(`🔍 Available indexes: ${indexes.join(", ")}`);
|
||||
}
|
||||
} else {
|
||||
console.log(`❌ Schema not found at ${schemaPath}`);
|
||||
}
|
||||
} catch (error) {
|
||||
console.log(`❌ Error loading schema: ${error.message}`);
|
||||
}
|
||||
|
||||
console.log("\n✅ Demo complete!");
|
Reference in New Issue
Block a user