diff --git a/generate_schemas.js b/generate_schemas.js deleted file mode 100644 index 61b74fb6..00000000 --- a/generate_schemas.js +++ /dev/null @@ -1,122 +0,0 @@ -const fs = require("fs"); -const path = require("path"); -const glob = require("glob"); -const process = require("process"); - -console.log("process.argv", process.argv); - -var projectName = process.argv[2]; -console.log("projectName", projectName); -var folderName = process.argv[3]; -console.log("folderName", folderName); -var key = process.argv[4]; -console.log("key", key); -var separator = process.argv[5]; -console.log("separator", separator); - -const findDirectoryPath = (targetDirectoryName, folderName) => { - const pathToCheck = path.join( - process.cwd(), - "/src", - "/", - targetDirectoryName - ); - console.log("pathToCheck", pathToCheck); - - const folders = fs - .readdirSync(pathToCheck, { withFileTypes: true }) - .filter( - (folder) => - folder.isDirectory() && - !folder.name.endsWith(".egg-info") && - folder.name != "tests" && - folder.name != "__pycache__" && - folder.name.includes(folderName) - ) - .map((folder) => ({ - name: folder.name, - path: path.join(pathToCheck, folder.name), - })); - console.log("folders", folders); - const routesDirectory = path.join(folders[0].path); - return routesDirectory; -}; - -const directoryPath = findDirectoryPath(projectName, folderName); - -const outputFile = path.join(process.cwd(), `${projectName}_schemas.json`); - -function return_json_schema(directoryPath, folder_path, projectName) { - console.log("return_json_schema", directoryPath, folder_path, projectName); - - const folders = fs - .readdirSync(path.normalize(directoryPath), { withFileTypes: true }) - .filter((folder) => folder.isDirectory() && folder.name != "__pycache__") - .map((folder) => ({ - name: folder.name, - path: path.join(directoryPath, folder.name), - })); - var folders_schemas = {}; - folders.forEach((folder) => { - if (folder.name == "schemas") { - const jsonFiles = glob.sync(path.join(folder.path, "**/*.json")); - var schemas = {}; - jsonFiles.forEach((filePath) => { - try { - const fileContent = fs.readFileSync(filePath, "utf8"); - var jsonData = JSON.parse(fileContent); - var filename = filePath - .replace(/^.*[\\/]/, "") - .replace(/\.[^/.]+$/, ""); - var route = jsonData[key]; - console.log("FOLDER PATH", projectName); - var values = [projectName, folder_path, route]; - console.log("values", values); - values = values.map(function (x) { - console.log("x", x); - return x.replace("/", "").replace(".", ""); - }); // first replace first . / by empty string - values = values.map(function (x) { - console.log("x", x); - return x.replaceAll("/", separator).replaceAll(".", separator); - }); // then replace all . / by separator - console.log("values", values); - jsonData["$id"] = values - .filter(function (val) { - return val; - }) - .join(separator); - schemas[filename] = jsonData; - } catch (error) { - console.error( - `Erreur lors de la lecture du fichier ${filePath}:`, - error - ); - } - }); - folders_schemas = Object.keys(schemas).reduce((acc, key) => { - const currentSchema = schemas[key]; - const modifiedSchema = { - $id: path.join(folder_path, currentSchema["$id"]), - ...currentSchema, - }; - acc[key] = modifiedSchema; - return acc; - }, folders_schemas); - } else { - var new_folder_path = folder_path + "/" + folder.name; - var test = return_json_schema(folder.path, new_folder_path, projectName); - folders_schemas[folder.name] = test; - } - }); - return folders_schemas; -} - -if (fs.existsSync(outputFile)) { - fs.unlinkSync(outputFile); -} - -const finalJson = {}; -finalJson[projectName] = return_json_schema(directoryPath, "", projectName); - -fs.writeFileSync(outputFile, JSON.stringify(finalJson, null, 2)); diff --git a/package.json b/package.json index 2ec8f0cf..9074f398 100644 --- a/package.json +++ b/package.json @@ -3,12 +3,12 @@ "version": "0.0.0", "description": "", "scripts": { - "json": "node generate_schemas.js opengeodeweb_back routes route /", + "json": "node ./node_modules/@geode/opengeodeweb-microservice/generate_schemas.js opengeodeweb_back routes route /", "test": "npm run json", "build": "npm run json" }, "dependencies": { - "glob": "^11.0.3" + "@geode/opengeodeweb-microservice": "latest" }, "exports": { "./opengeodeweb_back_schemas.json": { @@ -16,7 +16,6 @@ "require": "./opengeodeweb_back_schemas.json" } }, - "main": "generate_schemas.js", "repository": { "type": "git", "url": "git+https://github.com/Geode-solutions/OpenGeodeWeb-Back.git" diff --git a/requirements.in b/requirements.in index 6054d3a7..ca37fb9c 100644 --- a/requirements.in +++ b/requirements.in @@ -4,9 +4,8 @@ OpenGeode-Inspector==6.7.0 OpenGeode-Geosciences==9.2.2 OpenGeode-GeosciencesIO==5.7.2 Geode-Viewables==3.2.0 -fastjsonschema==2.16.2 Flask[async]==3.0.3 Flask-Cors==6.0.1 werkzeug==3.0.3 Flask-SQLAlchemy==3.1.1 -# OpenGeodeWeb-Microservice \ No newline at end of file +OpenGeodeWeb-Microservice \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index f6b829e8..3b55510b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -10,8 +10,8 @@ blinker==1.9.0 # via flask click==8.2.1 # via flask -fastjsonschema==2.16.2 - # via -r requirements.in +fastjsonschema==2.21.1 + # via opengeodeweb-microservice flask[async]==3.0.3 # via # -r requirements.in @@ -21,7 +21,9 @@ flask[async]==3.0.3 flask-cors==6.0.1 # via -r requirements.in flask-sqlalchemy==3.1.1 - # via -r requirements.in + # via + # -r requirements.in + # opengeodeweb-microservice geode-common==33.9.0 # via geode-viewables geode-viewables==3.2.0 @@ -59,8 +61,12 @@ opengeode-io==7.3.2 # -r requirements.in # geode-viewables # opengeode-geosciencesio +opengeodeweb-microservice==1.*,>=1.0.0 + # via -r requirements.in sqlalchemy==2.0.43 - # via flask-sqlalchemy + # via + # flask-sqlalchemy + # opengeodeweb-microservice typing-extensions==4.15.0 # via sqlalchemy werkzeug==3.0.3