Переглянути джерело

management script to load words into the library

master
kj1352 4 роки тому
джерело
коміт
b3d85ea4f4
34 змінених файлів з 131789 додано та 40 видалено
  1. +2
    -1
      package.json
  2. +131670
    -0
      src/default-library/DA.json
  3. +1
    -0
      src/default-library/DB.json
  4. +1
    -0
      src/default-library/DC.json
  5. +1
    -0
      src/default-library/DD.json
  6. +1
    -0
      src/default-library/DE.json
  7. +1
    -0
      src/default-library/DF.json
  8. +1
    -0
      src/default-library/DG.json
  9. +1
    -0
      src/default-library/DH.json
  10. +1
    -0
      src/default-library/DI.json
  11. +1
    -0
      src/default-library/DJ.json
  12. +1
    -0
      src/default-library/DK.json
  13. +1
    -0
      src/default-library/DL.json
  14. +1
    -0
      src/default-library/DM.json
  15. +1
    -0
      src/default-library/DN.json
  16. +1
    -0
      src/default-library/DO.json
  17. +1
    -0
      src/default-library/DP.json
  18. +1
    -0
      src/default-library/DQ.json
  19. +1
    -0
      src/default-library/DR.json
  20. +1
    -0
      src/default-library/DS.json
  21. +1
    -0
      src/default-library/DT.json
  22. +1
    -0
      src/default-library/DU.json
  23. +1
    -0
      src/default-library/DV.json
  24. +1
    -0
      src/default-library/DW.json
  25. +1
    -0
      src/default-library/DX.json
  26. +1
    -0
      src/default-library/DY.json
  27. +1
    -0
      src/default-library/DZ.json
  28. +0
    -2
      src/index.ts
  29. +0
    -0
      src/library/route.ts
  30. +84
    -0
      src/management-scripts/compile-library.ts
  31. +0
    -14
      src/models/library.ts
  32. +7
    -8
      src/models/word.ts
  33. +0
    -15
      src/revision/routes.ts
  34. +1
    -0
      tsconfig.json

+ 2
- 1
package.json Переглянути файл

@@ -4,7 +4,8 @@
"description": "anamnesis backend ExpressTS app",
"main": "dist/index.js",
"scripts": {
"start": "nodemon src/index.ts && tsc && node dist/src/index.js"
"start": "nodemon src/index.ts && tsc && node dist/src/index.js",
"load-library": "node dist/management-scripts/compile-library.js"
},
"author": "",
"license": "ISC",


+ 131670
- 0
src/default-library/DA.json
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 1
- 0
src/default-library/DB.json
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 1
- 0
src/default-library/DC.json
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 1
- 0
src/default-library/DD.json
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 1
- 0
src/default-library/DE.json
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 1
- 0
src/default-library/DF.json
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 1
- 0
src/default-library/DG.json
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 1
- 0
src/default-library/DH.json
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 1
- 0
src/default-library/DI.json
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 1
- 0
src/default-library/DJ.json
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 1
- 0
src/default-library/DK.json
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 1
- 0
src/default-library/DL.json
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 1
- 0
src/default-library/DM.json
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 1
- 0
src/default-library/DN.json
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 1
- 0
src/default-library/DO.json
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 1
- 0
src/default-library/DP.json
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 1
- 0
src/default-library/DQ.json
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 1
- 0
src/default-library/DR.json
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 1
- 0
src/default-library/DS.json
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 1
- 0
src/default-library/DT.json
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 1
- 0
src/default-library/DU.json
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 1
- 0
src/default-library/DV.json
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 1
- 0
src/default-library/DW.json
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 1
- 0
src/default-library/DX.json
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 1
- 0
src/default-library/DY.json
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 1
- 0
src/default-library/DZ.json
Різницю між файлами не показано, бо вона завелика
Переглянути файл


+ 0
- 2
src/index.ts Переглянути файл

@@ -5,7 +5,6 @@ import authRoutes from './authentication/routes';
import { connectToDatabaseServer } from './db-utils';
import sendGridMail from '@sendgrid/mail';
import { userProfileRoutes } from './user-profile/routes';
import { revisionRoutes } from './revision/routes';
import { categoryRoutes } from './user-profile/category-routes';
import { shelfRoutes } from './user-profile/shelf-routes';

@@ -20,7 +19,6 @@ app.use(passport.initialize());
app.set('port', process.env.PORT || 8001);
app.use('/', authRoutes);
app.use('/', userProfileRoutes);
app.use('/', revisionRoutes);
app.use('/', categoryRoutes);
app.use('/', shelfRoutes);



+ 0
- 0
src/library/route.ts Переглянути файл


+ 84
- 0
src/management-scripts/compile-library.ts Переглянути файл

@@ -0,0 +1,84 @@
import { gramaticalDetail, Word } from "../models/word";
import { getDatabaseClient, DB_NAME, connectToDatabaseServer } from "../db-utils";
import da from '../default-library/DA.json';
import db from '../default-library/DB.json';
import dc from '../default-library/DC.json';
import dd from '../default-library/DD.json';
import de from '../default-library/DE.json';
import df from '../default-library/DF.json';
import dg from '../default-library/DG.json';
import dh from '../default-library/DH.json';
import di from '../default-library/DI.json';
import dj from '../default-library/DJ.json';
import dk from '../default-library/DK.json';
import dl from '../default-library/DL.json';
import dm from '../default-library/DM.json';
import dn from '../default-library/DN.json';
import doy from '../default-library/DO.json';
import dp from '../default-library/DP.json';
import dq from '../default-library/DQ.json';
import dr from '../default-library/DR.json';
import ds from '../default-library/DS.json';
import dt from '../default-library/DT.json';
import du from '../default-library/DU.json';
import dv from '../default-library/DV.json';
import dw from '../default-library/DW.json';
import dx from '../default-library/DX.json';
import dy from '../default-library/DY.json';
import dz from '../default-library/DZ.json';

const defaultLibFiles = [da, db, dc, dd, de, df, dg, dh, di, dj, dk, dl, dm, dn, doy, dp, dq, dr, ds, dt, du, dv, dw, dx, dy, dz];


(async function compile_default_library_to_db() {
await connectToDatabaseServer();

const wordCollection = getDatabaseClient().db(DB_NAME).collection<Word>('words');

let allWords: Array<Word> = [];

for (let fileIndex = 0; fileIndex < defaultLibFiles.length; fileIndex += 1) {
const file: any = defaultLibFiles[fileIndex];
const allKeys: Array<string> = (Object.keys(file));

for (let i = 0; i < allKeys.length; i += 1) {
// file[allKeys[i]]
let wordName = allKeys[i];
let wordDetails = file[allKeys[i]];

let gramaticalDetailKeys: Array<string> = [];
let grammaticalDetails : Array<gramaticalDetail> = [];

if (wordDetails && wordDetails['MEANINGS']) {
gramaticalDetailKeys = (Object.keys(wordDetails['MEANINGS']));

for (let j = 0; j < gramaticalDetailKeys.length; j += 1) {
if (wordDetails['MEANINGS'] && wordDetails['MEANINGS'][gramaticalDetailKeys[j]]) {
grammaticalDetails.push({
type: wordDetails['MEANINGS'][gramaticalDetailKeys[j]][0],
description: wordDetails['MEANINGS'][gramaticalDetailKeys[j]][1],
context: wordDetails['MEANINGS'][gramaticalDetailKeys[j]][2],
examples: wordDetails['MEANINGS'][gramaticalDetailKeys[j]][3]
});
}
}
}

allWords.push({
name: wordName,
languageType: 'ENGLISH',
similarWords: wordDetails && wordDetails['SYNONYMS'] ? wordDetails['SYNONYMS'] : [],
oppositeWords: wordDetails && wordDetails['ANTONYMS'] ? wordDetails['ANTONYMS'] : [],
grammaticalDetails: grammaticalDetails
});
}
}

const newWordCollection = await wordCollection.insertMany(allWords);

console.log(newWordCollection.acknowledged);

return;

}())

+ 0
- 14
src/models/library.ts Переглянути файл

@@ -1,14 +0,0 @@
import { LanguageType } from "./variables";
import { Word } from "./word";


export interface Library {
_id: string,
languageType: LanguageType,
isArchived: boolean,
allWords: Array<Word>,
}

export interface MongoLibrary extends Omit<Library, "allWords"> {
allWords: Array<string> // Word IDs
}

+ 7
- 8
src/models/word.ts Переглянути файл

@@ -1,22 +1,21 @@
import { grammarType } from "./variables";
import { grammarType, LanguageType } from "./variables";

interface gramaticalDetail {
export interface gramaticalDetail {
type: grammarType,
description: string,
context: Array<string>,
examples: Array<string>,
}

export interface Word {
//_id is present by default in the DB
name: string,
pronounciation: {
languageType: LanguageType,
pronounciation?: {
text: string,
audio?: string,
},
similarWords?: Array<Word>,
similarWords?: Array<string>,
oppositeWords?: Array<string>,
grammaticalDetails: Array<gramaticalDetail>,
}

export interface MongoWord extends Omit<Word, "similarWords"> {
similarWords: Array<string>
}

+ 0
- 15
src/revision/routes.ts Переглянути файл

@@ -1,15 +0,0 @@
import express from 'express';
import passport from 'passport';
import { User } from '../models/user';

export const revisionRoutes = express.Router();

export const jwtAuthentication = passport.authenticate('jwt', { session: false });

revisionRoutes.get('/revision-questions/', jwtAuthentication, async (request, response) => {
const user: User = (request.user as any);

// TODO: Revision logic

return;
});

+ 1
- 0
tsconfig.json Переглянути файл

@@ -6,6 +6,7 @@
"noImplicitAny": true,
"moduleResolution": "node",
"sourceMap": true,
"resolveJsonModule": true,
"outDir": "dist",
"baseUrl": ".",
"paths": {


Завантаження…
Відмінити
Зберегти