xxxxxxxxxx
import { Entity, PrimaryGeneratedColumn, Column, OneToMany } from "typeorm"
import { Phone } from "./Phone"
import { Address } from './Address';
@Entity() //! veritabanı şemasını oluşturur bu sayfa
export class User {
@PrimaryGeneratedColumn() //todo **** unique olacak diyoruz.
id: number
@Column()
firstName: string
@Column()
lastName: string
@Column()
age: number
// @Column()
// phone: string //!muhakkak string olmalı number değil
// @Column()
// city: string
@OneToMany(() => Phone, (phone) => phone.user) //!çoktan teke gidiliyor usera
phone: Phone
//!userın veri tabanında bu kodlarla fiziksel bir bağlantısı olmuyor. ama phone.ts in oluyor veri tabanında. postmanda ki userdaki bütün bilgilerin yansıması ise phone ile birlikte user controllerdaki işlemle oluyor. usercontroller diyor ki sen ben de relations u kullanırsan sana bu bilgiyi veriririm.
// async all(request: Request, response: Response, next: NextFunction) {
// return this.userRepository.find({ relations: { phone: true } })
@OneToMany(() => Address, (adres) => adres.user)
adres: Address
}
@Entity()
export class Address {
@PrimaryGeneratedColumn()
id: number
@Column()
addressType: string
@Column()
addressLine: string
@ManyToOne(() => User, (user) => user.id)
@JoinColumn()
user: User
}
@Entity()
export class Phone {
@PrimaryGeneratedColumn()
id: number
@Column()
phoneType: string
@Column()
phoneNumber: string
@ManyToOne(() => User, (user) => user.id) //!çoktan teke gidiliyor usera
@JoinColumn() //!alt dalda ihtiyaç var buna ama üst dalda ihtiyaç yok, bu satırdaki ilişki fiziksel üst satırdaki yazımsal
user: User
}
typeorm : mysql ile haberleşmeyi sağlayan bir orm dilidir
//! bunu kurunca controller entity migration hazır olarak geliyor. bütün dosyalarla birlikte
// npx typeorm init --name Myproject-telefonrehberi-tekrar --database mysql --express
//
// npm i --save-dev @types/express
// npm install --save @types/cors
// npm install nodemon --save-dev
//todo
// {
// "dependencies": {
// "reflect-metadata": "^0.1.13"
// }
// }
//! @ ile koyduğumuz şeyleri çalıştırır @entity, bununla biz veritabanı işlemi yapacağımızı söylüyoruz.Özellikle, bu paket, TypeORM gibi veritabanı işlemleri için kullanılan kütüphanelerle entegrasyon için yaygın bir şekilde kullanılır. TypeORM gibi kütüphaneler, reflect-metadata ile işaretlenmiş sınıfları ve özellikleri kullanarak veritabanı tablolarını otomatik olarak oluşturabilir veya sorguları oluşturmak için bu meta veriyi kullanabilir.
//todo manytoone ve onetomany ile bir çok bilgiyi entity i biz bir tane endpoint de (localhost:3000/anasayfa/users) görüntülemiş oluyoruz. her biri için ayrı ayrı endpoint veya başka şeyler kullanmıyoruz. burada ki users endpointi nerede saklı usercontroller da.
//! @ManyToOne(() => User, (user) => user.id) //!çoktan teke gidiliyor usera
//! @JoinColumn() //!alt dalda ihtiyaç var buna ama üst dalda ihtiyaç yok, bu satırdaki ilişki fiziksel üst satırdaki yazımsal
user: User