'use strict' // Then you can simply run the snake_casing code in $parseDatabaseJson or $formatJson // $formatJson is called when you res.send(someModel) or JSON.stringify(someModel). // const _ = require('lodash') const { Model } = require('objection') class Schueler extends Model { static get tableName () { return 'schueler' } static get virtualAttributes () { return ['anrede', 'akt_halbjahr', 'schueler_in', 'studierende_r', 'berufsbezeichnung_mw', 'volljaehrig'] } // get akt_halbjahr () { // if (this.abschnitte) { // return _.last(this.abschnitte) // } // } get anrede () { return (this.Geschlecht === 3 ? 'Herr' : 'Frau') } get schueler_in () { return (this.Geschlecht === 3 ? 'Schüler' : 'Schülerin') } get studierende_r () { return (this.Geschlecht === 3 ? 'Studierender' : 'Studierende') } get berufsbezeichnung_mw () { if (this.fachklasse) return this.Geschlecht === 3 ? this.fachklasse.Bezeichnung : this.fachklasse.Beschreibung_W else return 'Keine Fachklasse zugeordnet' } get volljaehrig () { return this.Volljaehrig === '+' } volljaehrig_bei (datum) { if (!datum || !this.Geburtsdatum) return false var g = new Date(this.Geburtsdatum) var d = new Date(datum) return (d.getFullYear() - g.getFullYear() - ((d.getMonth() > g.getMonth() || (d.getMonth() === g.getMonth() && d.getDay() >= g.getDay())) ? 0 : 1)) >= 18 } static get relationMappings () { return { fachklasse: { relation: Model.BelongsToOneRelation, modelClass: Fachklasse, join: { from: 'schueler.Fachklasse_ID', to: 'eigeneschule_fachklassen.ID' } }, abschnitte: { relation: Model.HasManyRelation, modelClass: Abschnitt, join: { from: 'schueler.ID', to: 'schuelerlernabschnittsdaten.Schueler_ID' } }, vermerke: { relation: Model.HasManyRelation, modelClass: Vermerk, join: { from: 'schueler.ID', to: 'schuelervermerke.Schueler_ID' } }, bk_abschluss: { relation: Model.HasOneRelation, modelClass: BKAbschluss, join: { from: 'schueler.ID', to: 'schuelerbkabschluss.Schueler_ID' } }, bk_abschluss_faecher: { relation: Model.HasManyRelation, modelClass: BKAbschlussFach, join: { from: 'schueler.ID', to: 'schuelerbkfaecher.Schueler_ID' } }, abi_abschluss: { relation: Model.HasOneRelation, modelClass: AbiAbschluss, join: { from: 'schueler.ID', to: 'schuelerabitur.Schueler_ID' } }, abi_abschluss_faecher: { relation: Model.HasManyRelation, modelClass: AbiAbschlussFach, join: { from: 'schueler.ID', to: 'schuelerabifaecher.Schueler_ID' } }, fhr_abschluss: { relation: Model.HasOneRelation, modelClass: FHRAbschluss, join: { from: 'schueler.ID', to: 'schuelerfhr.Schueler_ID' } }, fhr_abschluss_faecher: { relation: Model.HasManyRelation, modelClass: FHRAbschlussFach, join: { from: 'schueler.ID', to: 'schuelerfhrfaecher.Schueler_ID' } }, schuelerfoto: { relation: Model.HasOneRelation, modelClass: Schuelerfoto, join: { from: 'schueler.ID', to: 'schuelerfotos.Schueler_ID' } }, sprachenfolgen: { relation: Model.HasManyRelation, modelClass: Sprachenfolge, join: { from: 'schueler.ID', to: 'schuelersprachenfolge.Schueler_ID' } }, versetzung: { relation: Model.HasOneRelation, modelClass: Versetzung, join: { from: 'schueler.Klasse', to: 'versetzung.Klasse' } } } } } class Fachklasse extends Model { static get tableName () { return 'eigeneschule_fachklassen' } } class Abschnitt extends Model { static get tableName () { return 'schuelerlernabschnittsdaten' } static get virtualAttributes () { return ['v_name_klassenlehrer', 'klassenlehrer_in', 'schuljahr'] } get v_name_klassenlehrer () { if (this.lehrer) return `${this.lehrer.Vorname[0]}. ${this.lehrer.Nachname}` } get klassenlehrer_in () { if (this.lehrer) return (this.lehrer.Geschlecht === '3' ? 'Klassenlehrer' : 'Klassenlehrerin') } get schuljahr () { return `${this.Jahr}/${this.Jahr - 1999}` } static get relationMappings () { return { lehrer: { relation: Model.BelongsToOneRelation, modelClass: Lehrer, join: { from: 'schuelerlernabschnittsdaten.KlassenLehrer', to: 'k_lehrer.Kuerzel' } }, fachklasse: { relation: Model.BelongsToOneRelation, modelClass: Fachklasse, join: { from: 'schuelerlernabschnittsdaten.Fachklasse_ID', to: 'eigeneschule_fachklassen.ID' } }, noten: { relation: Model.HasManyRelation, modelClass: Note, join: { from: 'schuelerlernabschnittsdaten.ID', to: 'schuelerleistungsdaten.Abschnitt_ID' } } } } } class Jahrgang extends Model { static get tableName () { return 'eigeneschule_jahrgaenge' } } class Versetzung extends Model { static get tableName () { return 'versetzung' } static get relationMappings () { return { jahrgang: { relation: Model.BelongsToOneRelation, modelClass: Jahrgang, join: { from: 'versetzung.Jahrgang_ID', to: 'eigeneschule_jahrgaenge.ID' } }, fachklasse: { relation: Model.BelongsToOneRelation, modelClass: Fachklasse, join: { from: 'versetzung.Fachklasse_ID', to: 'eigeneschule_fachklassen.ID' } }, schueler: { relation: Model.HasManyRelation, modelClass: Schueler, join: { from: 'versetzung.Klasse', to: 'schueler.Klasse' } } } } } class Lehrer extends Model { static get tableName () { return 'k_lehrer' } } class Note extends Model { static get tableName () { return 'schuelerleistungsdaten' } static get relationMappings () { return { fach: { relation: Model.BelongsToOneRelation, modelClass: Fach, join: { from: 'schuelerleistungsdaten.Fach_ID', to: 'eigeneschule_faecher.ID' } } } } } class Fach extends Model { static get tableName () { return 'eigeneschule_faecher' } static get relationMappings () { return { fach_gliederungen: { relation: Model.HasManyRelation, modelClass: FachGliederung, join: { from: 'eigeneschule_faecher.ID', to: 'fach_gliederungen.Fach_ID' } } } } } class BKAbschluss extends Model { static get tableName () { return 'schuelerbkabschluss' } } class BKAbschlussFach extends Model { static get tableName () { return 'schuelerbkfaecher' } static get relationMappings () { return { fach: { relation: Model.BelongsToOneRelation, modelClass: Fach, join: { from: 'schuelerbkfaecher.Fach_ID', to: 'eigeneschule_faecher.ID' } } } } } class AbiAbschluss extends Model { static get tableName () { return 'schuelerabitur' } } class AbiAbschlussFach extends Model { static get tableName () { return 'schuelerabifaecher' } static get relationMappings () { return { fach: { relation: Model.BelongsToOneRelation, modelClass: Fach, join: { from: 'schuelerabifaecher.Fach_ID', to: 'eigeneschule_faecher.ID' } } } } } class FHRAbschluss extends Model { static get tableName () { return 'schuelerfhr' } } class FHRAbschlussFach extends Model { static get tableName () { return 'schuelerfhrfaecher' } static get relationMappings () { return { fach: { relation: Model.BelongsToOneRelation, modelClass: Fach, join: { from: 'schuelerfhrfaecher.Fach_ID', to: 'eigeneschule_faecher.ID' } } } } } class Sprachenfolge extends Model { static get tableName () { return 'schuelersprachenfolge' } static get relationMappings () { return { fach: { relation: Model.BelongsToOneRelation, modelClass: Fach, join: { from: 'schuelersprachenfolge.Fach_ID', to: 'eigeneschule_faecher.ID' } } } } } class FachGliederung extends Model { static get tableName () { return 'fach_gliederungen' } static get relationMappings () { return { fachklasse: { relation: Model.BelongsToOneRelation, modelClass: Fachklasse, join: { from: 'fach_gliederungen.Fachklasse_ID', to: 'eigeneschule_fachklassen.ID' } } } } } class Vermerk extends Model { static get tableName () { return 'schuelervermerke' } } class Schuelerfoto extends Model { static get tableName () { return 'schuelerfotos' } } class Schule extends Model { static get tableName () { return 'eigeneschule' } static get virtualAttributes () { return ['schulleiter_in'] } get schulleiter_in () { return this.SchulleiterGeschlecht === 3 ? 'Schulleiter' : 'Schulleiterin' } } class Nutzer extends Model { static get tableName () { return 'users' } } module.exports = {Schueler, Abschnitt, Fachklasse, Versetzung, Lehrer, Note, Fach, BKAbschluss, BKAbschlussFach, AbiAbschluss, AbiAbschlussFach, FHRAbschluss, FHRAbschlussFach, Sprachenfolge, FachGliederung, Vermerk, Schuelerfoto, Schule, Nutzer, Jahrgang}