mirror of
https://github.com/immich-app/immich.git
synced 2025-01-10 13:56:47 +01:00
90 lines
1.8 KiB
TypeScript
90 lines
1.8 KiB
TypeScript
import { AssetEntity } from 'src/entities/asset.entity';
|
|
import { TagEntity } from 'src/entities/tag.entity';
|
|
import {
|
|
Column,
|
|
CreateDateColumn,
|
|
DeleteDateColumn,
|
|
Entity,
|
|
OneToMany,
|
|
PrimaryGeneratedColumn,
|
|
UpdateDateColumn,
|
|
} from 'typeorm';
|
|
|
|
export enum UserAvatarColor {
|
|
PRIMARY = 'primary',
|
|
PINK = 'pink',
|
|
RED = 'red',
|
|
YELLOW = 'yellow',
|
|
BLUE = 'blue',
|
|
GREEN = 'green',
|
|
PURPLE = 'purple',
|
|
ORANGE = 'orange',
|
|
GRAY = 'gray',
|
|
AMBER = 'amber',
|
|
}
|
|
|
|
export enum UserStatus {
|
|
ACTIVE = 'active',
|
|
REMOVING = 'removing',
|
|
DELETED = 'deleted',
|
|
}
|
|
|
|
@Entity('users')
|
|
export class UserEntity {
|
|
@PrimaryGeneratedColumn('uuid')
|
|
id!: string;
|
|
|
|
@Column({ default: '' })
|
|
name!: string;
|
|
|
|
@Column({ type: 'varchar', nullable: true })
|
|
avatarColor!: UserAvatarColor | null;
|
|
|
|
@Column({ default: false })
|
|
isAdmin!: boolean;
|
|
|
|
@Column({ unique: true })
|
|
email!: string;
|
|
|
|
@Column({ type: 'varchar', unique: true, default: null })
|
|
storageLabel!: string | null;
|
|
|
|
@Column({ default: '', select: false })
|
|
password?: string;
|
|
|
|
@Column({ default: '' })
|
|
oauthId!: string;
|
|
|
|
@Column({ default: '' })
|
|
profileImagePath!: string;
|
|
|
|
@Column({ default: true })
|
|
shouldChangePassword!: boolean;
|
|
|
|
@CreateDateColumn({ type: 'timestamptz' })
|
|
createdAt!: Date;
|
|
|
|
@DeleteDateColumn({ type: 'timestamptz' })
|
|
deletedAt!: Date | null;
|
|
|
|
@Column({ type: 'varchar', default: UserStatus.ACTIVE })
|
|
status!: UserStatus;
|
|
|
|
@UpdateDateColumn({ type: 'timestamptz' })
|
|
updatedAt!: Date;
|
|
|
|
@Column({ default: true })
|
|
memoriesEnabled!: boolean;
|
|
|
|
@OneToMany(() => TagEntity, (tag) => tag.user)
|
|
tags!: TagEntity[];
|
|
|
|
@OneToMany(() => AssetEntity, (asset) => asset.owner)
|
|
assets!: AssetEntity[];
|
|
|
|
@Column({ type: 'bigint', nullable: true })
|
|
quotaSizeInBytes!: number | null;
|
|
|
|
@Column({ type: 'bigint', default: 0 })
|
|
quotaUsageInBytes!: number;
|
|
}
|