125 lines
2.3 KiB
JavaScript
125 lines
2.3 KiB
JavaScript
import {
|
|
Entity,
|
|
PrimaryGeneratedColumn,
|
|
Column,
|
|
ManyToOne,
|
|
OneToMany,
|
|
ValueTransformer,
|
|
} from "typeorm"
|
|
|
|
const transformer = {
|
|
date: {
|
|
from: (date ) => date && new Date(parseInt(date, 10)),
|
|
to: (date) => date?.valueOf().toString(),
|
|
},
|
|
bigint: {
|
|
from: (bigInt) => bigInt && parseInt(bigInt, 10),
|
|
to: (bigInt) => bigInt?.toString(),
|
|
},
|
|
}
|
|
|
|
@Entity({ name: "users" })
|
|
export class UserEntity {
|
|
@PrimaryGeneratedColumn("uuid")
|
|
id = undefined;
|
|
|
|
@Column("varchar")
|
|
name!
|
|
|
|
|
|
@Column({ type: "varchar", nullable: true, unique: true })
|
|
email!: string | null
|
|
|
|
@Column({ type: "varchar", nullable: true, transformer: transformer.date })
|
|
emailVerified!: string | null
|
|
|
|
@Column("varchar")
|
|
image!: string | null
|
|
|
|
@OneToMany(() => SessionEntity, (session) => session.userId)
|
|
sessions!: SessionEntity[]
|
|
|
|
@OneToMany(() => AccountEntity, (account) => account.userId)
|
|
accounts!: AccountEntity[]
|
|
}
|
|
|
|
@Entity({ name: "accounts" })
|
|
export class AccountEntity {
|
|
@PrimaryGeneratedColumn("uuid")
|
|
id!: string
|
|
|
|
@Column({ type: "uuid" })
|
|
userId!: string
|
|
|
|
@Column()
|
|
type!: string
|
|
|
|
@Column()
|
|
provider!: string
|
|
|
|
@Column()
|
|
providerAccountId!: string
|
|
|
|
@Column("varchar")
|
|
refresh_token!: string | null
|
|
|
|
@Column("varchar")
|
|
access_token!: string | null
|
|
|
|
@Column({
|
|
nullable: true,
|
|
type: "bigint",
|
|
transformer: transformer.bigint,
|
|
})
|
|
expires_at!: number | null
|
|
|
|
@Column("varchar")
|
|
token_type!: string | null
|
|
|
|
@Column("varchar")
|
|
scope!: string | null
|
|
|
|
@Column("varchar")
|
|
id_token!: string | null
|
|
|
|
@Column("varchar")
|
|
session_state!: string | null
|
|
|
|
@ManyToOne(() => UserEntity, (user) => user.accounts, {
|
|
createForeignKeyConstraints: true,
|
|
})
|
|
user!: UserEntity
|
|
}
|
|
|
|
@Entity({ name: "sessions" })
|
|
export class SessionEntity {
|
|
@PrimaryGeneratedColumn("uuid")
|
|
id!: string
|
|
|
|
@Column({ unique: true })
|
|
sessionToken!: string
|
|
|
|
@Column({ type: "uuid" })
|
|
userId!: string
|
|
|
|
@Column({ transformer: transformer.date })
|
|
expires!: string
|
|
|
|
@ManyToOne(() => UserEntity, (user) => user.sessions)
|
|
user!: UserEntity
|
|
}
|
|
|
|
@Entity({ name: "verification_tokens" })
|
|
export class VerificationTokenEntity {
|
|
@PrimaryGeneratedColumn("uuid")
|
|
id!: string
|
|
|
|
@Column()
|
|
token!: string
|
|
|
|
@Column()
|
|
identifier!: string
|
|
|
|
@Column({ transformer: transformer.date })
|
|
expires!: string
|
|
} |