initial commit

This commit is contained in:
Matti Luukkainen
2017-10-13 12:44:49 +03:00
commit e9cab4622c
6 changed files with 4061 additions and 0 deletions
+2
View File
@@ -0,0 +1,2 @@
node_modules
.vscode
+1
View File
@@ -0,0 +1 @@
require('./src/app')
+3887
View File
File diff suppressed because it is too large Load Diff
+21
View File
@@ -0,0 +1,21 @@
{
"name": "nodetest",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"axios": "^0.16.2",
"install": "^0.10.1",
"knex": "^0.13.0",
"moment": "^2.19.1",
"npm": "^5.4.2",
"pg": "^7.3.0",
"pg-hstore": "^2.3.2",
"sequelize": "^4.13.8"
}
}
+61
View File
@@ -0,0 +1,61 @@
const Sequelize = require('sequelize')
const moment = require('moment')
const { Student, Credit, Studyright, sequelize } = require('./models')
const Op = Sequelize.Op;
const studyrightsStartedAt = (date) => {
return Studyright.findAll({
limit : 200,
include: [ {
model: Student,
include: [ Credit ]
} ],
where: {
startdate: {
[Op.eq]: new Date(date)
}
}
})
}
const studentsStartedAtDepartment = (studyrights, dep, startDate) => {
const hasNoPreviousStudies = (s) => {
return true
}
const hasStarted = (s) => {
return s.credits.length>0
}
return studyrights
.filter( s => s.highlevelname === dep )
.map( s => s.student )
.filter( hasStarted )
.filter( hasNoPreviousStudies )
}
async function main() {
try {
const BSC_CS = 'Bachelor of Science, Computer Science'
const BSC_MATH = 'Bachelor of Science, Mathematics'
const startDate = '2005-08-01'
const studyrights = await studyrightsStartedAt(startDate)
const cs = studentsStartedAtDepartment(studyrights, BSC_CS, moment(startDate))
cs.forEach( s => console.log(s.studentnumber))
//console.log(studyrights.map(s=>s.student.studentnumber))
} catch (e) {
console.log(e)
}
sequelize.close()
}
main()
+89
View File
@@ -0,0 +1,89 @@
const Sequelize = require('sequelize')
const sequelize = new Sequelize('tkt_oodi', 'tkt_oodi', process.ENV.PW, {
host: 'localhost',
dialect:'postgres',
});
const Student = sequelize.define('student',
{
studentnumber: {
primaryKey: true,
type: Sequelize.STRING
},
lastname: { type: Sequelize.STRING },
firstnames: { type: Sequelize.STRING },
abbreviatedname: { type: Sequelize.STRING },
birthdate: { type: Sequelize.DATE },
communicationlanguage: { type: Sequelize.STRING },
country: { type: Sequelize.STRING },
creditcount: { type: Sequelize.INTEGER },
dateoffirstcredit: { type: Sequelize.DATE },
dateoflastcredit: { type: Sequelize.DATE },
dateofuniversityenrollment: { type: Sequelize.DATE },
gradestudent: { type: Sequelize.STRING },
matriculationexamination: { type: Sequelize.STRING },
nationalities: { type: Sequelize.STRING },
semesterenrollmenttypecode: { type: Sequelize.STRING },
sex: { type: Sequelize.STRING },
studentstatuscode: { type: Sequelize.INTEGER },
},
{
tableName: 'student',
timestamps: false,
}
);
const Credit = sequelize.define('credit',
{
id: {
primaryKey: true,
type: Sequelize.STRING
},
grade: { type: Sequelize.STRING },
student_studentnumber: { type: Sequelize.STRING },
credits: { type: Sequelize.DOUBLE },
ordering: { type: Sequelize.STRING },
status: { type: Sequelize.STRING },
statuscode: { type: Sequelize.STRING },
courseinstance_id: { type: Sequelize.BIGINT },
},
{
tableName: 'credit',
timestamps: false,
}
);
const Studyright = sequelize.define('studyright',
{
studyrightid: {
primaryKey: true,
type: Sequelize.BIGINT
},
canceldate: { type: Sequelize.DATE },
cancelorganisation: { type: Sequelize.STRING },
enddate: { type: Sequelize.DATE },
extentcode: { type: Sequelize.INTEGER },
givendate: { type: Sequelize.DATE },
graduated: { type: Sequelize.INTEGER },
highlevelname: { type: Sequelize.STRING },
prioritycode: { type: Sequelize.INTEGER },
startdate: { type: Sequelize.DATE },
studystartdate: { type: Sequelize.DATE },
organization_code: { type: Sequelize.STRING },
student_studentnumber: { type: Sequelize.STRING },
},
{
tableName: 'studyright',
timestamps: false,
}
);
Credit.belongsTo(Student, {foreignKey: 'student_studentnumber', targetKey: 'studentnumber'});
Student.hasMany(Credit, {foreignKey: 'student_studentnumber', sourceKey: 'studentnumber'});
Studyright.belongsTo(Student, {foreignKey: 'student_studentnumber', targetKey: 'studentnumber'});
Student.hasMany(Studyright, {foreignKey: 'student_studentnumber', sourceKey: 'studentnumber'});
module.exports = {Student, Credit, Studyright, sequelize}