diff --git a/package-lock.json b/package-lock.json index 2535288..49c1408 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,11 +21,13 @@ "bcryptjs": "^2.4.3", "class-transformer": "^0.5.1", "class-validator": "^0.14.1", + "mysql": "^2.18.1", "mysql2": "^3.10.0", "passport": "^0.7.0", "passport-jwt": "^4.0.1", - "reflect-metadata": "^0.2.0", - "rxjs": "^7.8.1" + "reflect-metadata": "^0.2.2", + "rxjs": "^7.8.1", + "typeorm": "^0.3.20" }, "devDependencies": { "@nestjs/cli": "^10.0.0", @@ -34,7 +36,7 @@ "@types/bcryptjs": "^2.4.6", "@types/express": "^4.17.17", "@types/jest": "^29.5.2", - "@types/node": "^20.3.1", + "@types/node": "^20.14.2", "@types/passport-jwt": "^4.0.1", "@types/supertest": "^6.0.0", "@typescript-eslint/eslint-plugin": "^6.0.0", @@ -2165,8 +2167,7 @@ "node_modules/@sqltools/formatter": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/@sqltools/formatter/-/formatter-1.2.5.tgz", - "integrity": "sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==", - "peer": true + "integrity": "sha512-Uy0+khmZqUrUGm5dmMqVlnvufZRSK0FbYzVgp0UMstm+F5+W2/jnEEQyc9vo1ZR/E5ZI/B1WjjoTqBqwJL6Krw==" }, "node_modules/@tsconfig/node10": { "version": "1.0.11", @@ -2393,6 +2394,7 @@ "version": "20.14.2", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.2.tgz", "integrity": "sha512-xyu6WAMVwv6AKFLB+e/7ySZVr/0zLCzOa7rSpq6jNwpqOrUbcACDWC+53d4n2QHOnDou0fbIsg8wZu/sxrnI4Q==", + "license": "MIT", "dependencies": { "undici-types": "~5.26.4" } @@ -3027,8 +3029,7 @@ "node_modules/any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "peer": true + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" }, "node_modules/anymatch": { "version": "3.1.3", @@ -3059,7 +3060,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.1.0.tgz", "integrity": "sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA==", - "peer": true, "engines": { "node": ">= 6.0.0" } @@ -3278,6 +3278,15 @@ "resolved": "https://registry.npmjs.org/bcryptjs/-/bcryptjs-2.4.3.tgz", "integrity": "sha512-V/Hy/X9Vt7f3BbPJEi8BdVFMByHi+jNXrYkW3huaybV/kQ0KJg0Y6PkEMbn+zeT+i+SiKZ/HMqJGIIt4LZDqNQ==" }, + "node_modules/bignumber.js": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.0.0.tgz", + "integrity": "sha512-t/OYhhJ2SD+YGBQcjY8GzzDHEk9f3nerxjtfa6tlMXfe7frs/WozhvCNoGvpM0P3bNf3Gq5ZRMlGr5f3r4/N8A==", + "license": "MIT", + "engines": { + "node": "*" + } + }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", @@ -3659,7 +3668,6 @@ "version": "2.1.11", "resolved": "https://registry.npmjs.org/cli-highlight/-/cli-highlight-2.1.11.tgz", "integrity": "sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==", - "peer": true, "dependencies": { "chalk": "^4.0.0", "highlight.js": "^10.7.1", @@ -3680,7 +3688,6 @@ "version": "7.0.4", "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "peer": true, "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.0", @@ -3691,7 +3698,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "peer": true, "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -3708,7 +3714,6 @@ "version": "16.2.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "peer": true, "dependencies": { "cliui": "^7.0.2", "escalade": "^3.1.1", @@ -3726,7 +3731,6 @@ "version": "20.2.9", "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "peer": true, "engines": { "node": ">=10" } @@ -4050,8 +4054,7 @@ "node_modules/dayjs": { "version": "1.11.11", "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.11.tgz", - "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==", - "peer": true + "integrity": "sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==" }, "node_modules/debug": { "version": "4.3.5", @@ -5456,7 +5459,6 @@ "version": "10.7.3", "resolved": "https://registry.npmjs.org/highlight.js/-/highlight.js-10.7.3.tgz", "integrity": "sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==", - "peer": true, "engines": { "node": "*" } @@ -7078,6 +7080,51 @@ "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "dev": true }, + "node_modules/mysql": { + "version": "2.18.1", + "resolved": "https://registry.npmjs.org/mysql/-/mysql-2.18.1.tgz", + "integrity": "sha512-Bca+gk2YWmqp2Uf6k5NFEurwY/0td0cpebAucFpY/3jhrwrVGuxU2uQFCHjU19SJfje0yQvi+rVWdq78hR5lig==", + "license": "MIT", + "dependencies": { + "bignumber.js": "9.0.0", + "readable-stream": "2.3.7", + "safe-buffer": "5.1.2", + "sqlstring": "2.3.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mysql/node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/mysql/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/mysql/node_modules/sqlstring": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/sqlstring/-/sqlstring-2.3.1.tgz", + "integrity": "sha512-ooAzh/7dxIG5+uDik1z/Rd1vli0+38izZhGzSa34FwR7IbelPWCCKSNIl8jlL/F7ERvy8CB2jNeM1E9i9mXMAQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, "node_modules/mysql2": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.10.0.tgz", @@ -7111,7 +7158,6 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "peer": true, "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", @@ -7426,14 +7472,12 @@ "node_modules/parse5": { "version": "5.1.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", - "peer": true + "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==" }, "node_modules/parse5-htmlparser2-tree-adapter": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "peer": true, "dependencies": { "parse5": "^6.0.1" } @@ -7441,8 +7485,7 @@ "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "peer": true + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==" }, "node_modules/parseurl": { "version": "1.3.3", @@ -7905,7 +7948,8 @@ "node_modules/reflect-metadata": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.2.2.tgz", - "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==" + "integrity": "sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==", + "license": "Apache-2.0" }, "node_modules/repeat-string": { "version": "1.6.1", @@ -8301,7 +8345,6 @@ "version": "2.4.11", "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "peer": true, "dependencies": { "inherits": "^2.0.1", "safe-buffer": "^5.0.1" @@ -8915,7 +8958,6 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "peer": true, "dependencies": { "any-promise": "^1.0.0" } @@ -8924,7 +8966,6 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "peer": true, "dependencies": { "thenify": ">= 3.1.0 < 4" }, @@ -9217,7 +9258,7 @@ "version": "0.3.20", "resolved": "https://registry.npmjs.org/typeorm/-/typeorm-0.3.20.tgz", "integrity": "sha512-sJ0T08dV5eoZroaq9uPKBoNcGslHBR4E4y+EBHs//SiGbblGe7IeduP/IH4ddCcj0qp3PHwDwGnuvqEAnKlq/Q==", - "peer": true, + "license": "MIT", "dependencies": { "@sqltools/formatter": "^1.2.5", "app-root-path": "^3.1.0", @@ -9337,7 +9378,6 @@ "url": "https://feross.org/support" } ], - "peer": true, "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -9347,7 +9387,6 @@ "version": "2.1.6", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-2.1.6.tgz", "integrity": "sha512-+hEnITedc8LAtIP9u3HJDFIdcLV2vXP33sqLLIzkv1Db1zO/1OxbvYf0Y1OC/S/Qo5dxHXepofhmxL02PsKe+A==", - "peer": true, "bin": { "mkdirp": "dist/cjs/src/bin.js" }, diff --git a/package.json b/package.json index ad1aa40..3f0306f 100644 --- a/package.json +++ b/package.json @@ -32,11 +32,13 @@ "bcryptjs": "^2.4.3", "class-transformer": "^0.5.1", "class-validator": "^0.14.1", + "mysql": "^2.18.1", "mysql2": "^3.10.0", "passport": "^0.7.0", "passport-jwt": "^4.0.1", - "reflect-metadata": "^0.2.0", - "rxjs": "^7.8.1" + "reflect-metadata": "^0.2.2", + "rxjs": "^7.8.1", + "typeorm": "^0.3.20" }, "devDependencies": { "@nestjs/cli": "^10.0.0", @@ -45,7 +47,7 @@ "@types/bcryptjs": "^2.4.6", "@types/express": "^4.17.17", "@types/jest": "^29.5.2", - "@types/node": "^20.3.1", + "@types/node": "^20.14.2", "@types/passport-jwt": "^4.0.1", "@types/supertest": "^6.0.0", "@typescript-eslint/eslint-plugin": "^6.0.0", diff --git a/src/Profesor/entities/profesor.entity.ts b/src/Profesor/entities/profesor.entity.ts index 092ccd2..7d8600f 100644 --- a/src/Profesor/entities/profesor.entity.ts +++ b/src/Profesor/entities/profesor.entity.ts @@ -1,12 +1,17 @@ -import { Entity, Column, PrimaryColumn, ManyToOne } from "typeorm"; - +import { Entity, PrimaryColumn, Column, ManyToOne, OneToMany, JoinColumn } from 'typeorm'; +import { Edificio } from './edificio.entity'; +import { Adscripcion } from './adscripcion.entity'; +import { Categoria } from './categoria.entity'; +import { DatosAcademicos } from './datos_academicos.entity'; +import { LineasInvestigacion } from './lineas_investigacion.entity'; +import { ProyectosAcademicos } from './proyectos_academicos.entity'; @Entity() export class Profesor { - @PrimaryColumn({ type: 'int', length:11, nullable: false }) + @PrimaryColumn({ type: 'int', length: 11, nullable: false }) id_profesor: number; - @Column({ type: 'int', length:11, nullable: false }) + @Column({ type: 'int', length: 11, nullable: false }) id_usuario: number; @Column({ type: 'varchar', length: 10, nullable: true }) @@ -63,4 +68,24 @@ export class Profesor { @Column({ type: 'timestamp', nullable: false, default: () => 'CURRENT_TIMESTAMP', onUpdate: 'CURRENT_TIMESTAMP' }) fecha_actualizacion: Date; + @ManyToOne(() => Edificio, edificio => edificio.profesores) + @JoinColumn({ name: 'id_edificio' }) + edificio: Edificio; + + @ManyToOne(() => Adscripcion, adscripcion => adscripcion.profesores) + @JoinColumn({ name: 'id_adscripcion' }) + adscripcion: Adscripcion; + + @ManyToOne(() => Categoria, categoria => categoria.profesores) + @JoinColumn({ name: 'id_categoria' }) + categoria: Categoria; + + @OneToMany(() => DatosAcademicos, datosAcademicos => DatosAcademicos.profesor) + datosAcademicos: DatosAcademicos[]; + + @OneToMany(() => LineasInvestigacion, lineasInvestigacion => LineasInvestigacion.profesor) + lineasInvestigacion: LineasInvestigacion[]; + + @OneToMany(() => ProyectosAcademicos, proyectosAcademicos => ProyectosAcademicos.profesor) + proyectosAcademicos: ProyectosAcademicos[]; } diff --git a/src/adscripcion/entities/adscripcion.entity.ts b/src/adscripcion/entities/adscripcion.entity.ts index d235b78..83b9758 100644 --- a/src/adscripcion/entities/adscripcion.entity.ts +++ b/src/adscripcion/entities/adscripcion.entity.ts @@ -1,12 +1,14 @@ import { Entity, PrimaryColumn, Column, OneToMany } from 'typeorm'; +import { Profesor } from './profesor.entity'; -@Entity({ name: 'adscripcion' }) +@Entity() export class Adscripcion { - @PrimaryColumn({ type: 'int', length: 11, nullable: false }) id_adscripcion: number; @Column({ type: 'varchar', length: 150, nullable: false }) adscripcion: string; + @OneToMany(() => Profesor, profesor => Profesor.adscripcion) + profesores: Profesor[]; } diff --git a/src/categoria/entities/categoria.entity.ts b/src/categoria/entities/categoria.entity.ts index 604f23e..5bc1fb6 100644 --- a/src/categoria/entities/categoria.entity.ts +++ b/src/categoria/entities/categoria.entity.ts @@ -1,12 +1,14 @@ -import { Entity, PrimaryColumn, Column } from 'typeorm'; +import { Entity, PrimaryColumn, Column, OneToMany } from 'typeorm'; +import { Profesor } from './profesor.entity'; @Entity() export class Categoria { - @PrimaryColumn({ type: 'int', length: 11, nullable: false }) id_categoria: number; @Column({ type: 'varchar', length: 256, nullable: false }) categoria: string; + @OneToMany(() => Profesor, profesor => Profesor.categoria) + profesores: Profesor[]; } diff --git a/src/datos_academicos/entities/datos_academicos.entity.ts b/src/datos_academicos/entities/datos_academicos.entity.ts index c5398b5..62e56bd 100644 --- a/src/datos_academicos/entities/datos_academicos.entity.ts +++ b/src/datos_academicos/entities/datos_academicos.entity.ts @@ -1,9 +1,10 @@ -import { Entity,PrimaryColumn, Column } from 'typeorm'; +import { Entity, PrimaryColumn, Column, ManyToOne, JoinColumn } from 'typeorm'; +import { Profesor } from './profesor.entity'; @Entity({ name: 'datos_academicos' }) export class DatosAcademicos { - @PrimaryColumn({ type: 'int', length:11, nullable:false }) + @PrimaryColumn({ type: 'int', length: 11, nullable: false }) id_datos: number; @Column({ type: 'int', nullable: false }) @@ -12,7 +13,10 @@ export class DatosAcademicos { @Column({ type: 'varchar', length: 30, nullable: true }) grado_maximo: string; - @Column({ type: 'varchar', length: 260, nullable: true}) + @Column({ type: 'varchar', length: 260, nullable: true }) grados_obtenidos: string; + @ManyToOne(() => Profesor, profesor => profesor.datosAcademicos) + @JoinColumn({ name: 'id_profesor' }) + profesor: Profesor; } diff --git a/src/edificio/entities/edificio.entity.ts b/src/edificio/entities/edificio.entity.ts index c9053af..c5e2159 100644 --- a/src/edificio/entities/edificio.entity.ts +++ b/src/edificio/entities/edificio.entity.ts @@ -1,12 +1,14 @@ -import { Entity, PrimaryColumn, Column } from 'typeorm'; +import { Entity, PrimaryColumn, Column, OneToMany } from 'typeorm'; +import { Profesor } from './profesor.entity'; @Entity() export class Edificio { - - @PrimaryColumn({ type: 'int', length:11, nullable: false }) + @PrimaryColumn({ type: 'int', length: 11, nullable: false }) id_edificio: number; @Column({ type: 'varchar', length: 256, nullable: false }) edificio: string; + @OneToMany(() => Profesor, profesor => Profesor.edificio) + profesores: Profesor[]; } diff --git a/src/lineas_investigacion/entities/lineas_investigacion.entity.ts b/src/lineas_investigacion/entities/lineas_investigacion.entity.ts index 7b47ad7..b4de336 100644 --- a/src/lineas_investigacion/entities/lineas_investigacion.entity.ts +++ b/src/lineas_investigacion/entities/lineas_investigacion.entity.ts @@ -1,9 +1,10 @@ -import { Entity,PrimaryColumn, Column} from 'typeorm' +import { Entity, PrimaryColumn, Column, ManyToOne, JoinColumn } from 'typeorm'; +import { Profesor } from './profesor.entity'; @Entity({ name: 'lineas_investigacion' }) export class LineasInvestigacion { - @PrimaryColumn({ type: 'int', length:11, nullable: false }) + @PrimaryColumn({ type: 'int', length: 11, nullable: false }) id_linea_inv: number; @Column({ type: 'int', nullable: false }) @@ -15,4 +16,7 @@ export class LineasInvestigacion { @Column({ type: 'varchar', length: 255, nullable: true }) lineas_inv_html: string; + @ManyToOne(() => Profesor, profesor => profesor.lineasInvestigacion) + @JoinColumn({ name: 'id_profesor' }) + profesor: Profesor; } diff --git a/src/proyecto/entities/proyectos_academicos.ts b/src/proyecto/entities/proyectos_academicos.ts deleted file mode 100644 index 7a29ff7..0000000 --- a/src/proyecto/entities/proyectos_academicos.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Entity,PrimaryColumn, Column } from 'typeorm'; - -@Entity({ name: 'proyectos_academicos' }) -export class ProyectosAcademicos { - - @PrimaryColumn({ type: 'int', length:11, nullable: false }) - id_proyecto: number; - - @Column({ type: 'int', nullable: false }) - id_profesor: number; - - @Column({ type: 'varchar', length: 255, nullable: true }) - proyecto: string; - - @Column({ type: 'varchar', length: 255, nullable: true }) - proyecto_html: string; -} diff --git a/src/proyectos_academicos/entities/proyectos_academicos.entity.ts b/src/proyectos_academicos/entities/proyectos_academicos.entity.ts index 2da37c3..6c7671d 100644 --- a/src/proyectos_academicos/entities/proyectos_academicos.entity.ts +++ b/src/proyectos_academicos/entities/proyectos_academicos.entity.ts @@ -1,14 +1,22 @@ -import {Entity,Column,PrimaryColumn} from "typeorm"; +import { Entity, PrimaryColumn, Column, ManyToOne, JoinColumn } from 'typeorm'; +import { Profesor } from './profesor.entity'; -@Entity() -export class proyectos_academicos{ +@Entity({ name: 'proyectos_academicos' }) +export class ProyectosAcademicos { - @PrimaryColumn() - id_proyectos:number + @PrimaryColumn({ type: 'int', length: 11, nullable: false }) + id_proyecto: number; - @Column() - id_profesor:number + @Column({ type: 'int', nullable: false }) + id_profesor: number; - @Column() - proyectos: string -} \ No newline at end of file + @Column({ type: 'varchar', length: 255, nullable: true }) + proyecto: string; + + @Column({ type: 'varchar', length: 255, nullable: true }) + proyecto_html: string; + + @ManyToOne(() => Profesor, profesor => profesor.proyectosAcademicos) + @JoinColumn({ name: 'id_profesor' }) + profesor: Profesor; +} diff --git a/src/tipo_usuario/entities/tipo_usuario.entity.ts b/src/tipo_usuario/entities/tipo_usuario.entity.ts index d976bbc..3aced54 100644 --- a/src/tipo_usuario/entities/tipo_usuario.entity.ts +++ b/src/tipo_usuario/entities/tipo_usuario.entity.ts @@ -1,12 +1,15 @@ -import { Entity,PrimaryColumn, Column } from 'typeorm'; +import { Entity, PrimaryColumn, Column, OneToMany } from 'typeorm'; +import { User } from './user.entity'; -@Entity() +@Entity({ name: 'tipo_usuario' }) export class TipoUsuario { - - @PrimaryColumn({ type: 'int', length:11, nullable: false }) + + @PrimaryColumn({ type: 'int', length: 11, nullable: false }) id_tipo_usuario: number; @Column({ type: 'varchar', length: 30, nullable: false }) tipo_usuario: string; + @OneToMany(() => User, user => User.tipoUsuario) + users: User[]; } diff --git a/src/users/entities/user.entity.ts b/src/users/entities/user.entity.ts index de20ad2..3436f21 100644 --- a/src/users/entities/user.entity.ts +++ b/src/users/entities/user.entity.ts @@ -1,9 +1,10 @@ -import { Entity,PrimaryColumn, Column,} from 'typeorm'; +import { Entity, PrimaryColumn, Column, ManyToOne, JoinColumn } from 'typeorm'; +import { TipoUsuario } from './tipo_usuario.entity'; @Entity({ name: 'usuario' }) export class User { - @PrimaryColumn({ type: 'int', length:11, nullable:false }) + @PrimaryColumn({ type: 'int', length: 11, nullable: false }) id_usuario: number; @Column({ type: 'int', nullable: false }) @@ -27,4 +28,7 @@ export class User { @Column({ type: 'datetime', nullable: true }) lastlog: Date; + @ManyToOne(() => TipoUsuario, tipoUsuario => tipoUsuario.users) + @JoinColumn({ name: 'id_tipo_usuario' }) + tipoUsuario: TipoUsuario; }