* Remove workspace schema creation from signUp * Set user workspaceMember nullable * Remove workspace creation * Handle null workspace in tokens * Update onboarding status * Generate types * Move createWorkspace to workspace resolver * Create workspace after signup * Update createWorkspace return type * Update createWorkspace return type * Create core.workspace at signup * WIP * Fix create workspace * Fix create workspace * Clean code * Remove useless recoil set * Simplify create workspace request * Set currentWorkspace at login * Fix tests * Create a recoil value for is workspaceSchema created * Rename createWorkspace to createWorkspaceSchema * Code review returns * Use AppPath when possible * Try without state * Fix * Fixes * Rename createWorkspaceSchema to activateWorkspace * Remove defaultAvatarUrl from user * Add defaultAvatarUrl to core user This reverts commit 1701c30eb18804558293cc42043aedf96ea888df. * Add defaultAvatarUrl to core user This reverts commit 1701c30eb18804558293cc42043aedf96ea888df. * Fix ci * Fix tests * Fix storybook * Fix test * Remove useless query * Fix test * Fix test * Fix mock data * Fix test * Clean Mock Requests * Fix tentative * Revert "Clean Mock Requests" This reverts commit 8aa20a34363ffddfdee24f18fc80b27ea0ad5e1d. * Fix * Revert "Fix" This reverts commit 2df7e9b6569b8bfb53f6a45391db725e28d16a18. * Revert "Revert "Clean Mock Requests"" This reverts commit 3aefef8e9600d161434a047e845563d1b8e0692e. * Revert "Fix tentative" This reverts commit 13e7748d6f3b3858d30fb08adbc8ad347c5556ee. * Update filename --------- Co-authored-by: Charles Bochet <charles@twenty.com>
91 lines
2.0 KiB
TypeScript
91 lines
2.0 KiB
TypeScript
import { ID, Field, ObjectType } from '@nestjs/graphql';
|
|
|
|
import {
|
|
Entity,
|
|
Column,
|
|
PrimaryGeneratedColumn,
|
|
CreateDateColumn,
|
|
UpdateDateColumn,
|
|
OneToMany,
|
|
ManyToOne,
|
|
} from 'typeorm';
|
|
import { IDField } from '@ptc-org/nestjs-query-graphql';
|
|
|
|
import { RefreshToken } from 'src/core/refresh-token/refresh-token.entity';
|
|
import { Workspace } from 'src/core/workspace/workspace.entity';
|
|
import { WorkspaceMember } from 'src/core/user/dtos/workspace-member.dto';
|
|
|
|
@Entity({ name: 'user', schema: 'core' })
|
|
@ObjectType('User')
|
|
export class User {
|
|
@IDField(() => ID)
|
|
@PrimaryGeneratedColumn('uuid')
|
|
id: string;
|
|
|
|
@Field()
|
|
@Column({ default: '' })
|
|
firstName: string;
|
|
|
|
@Field()
|
|
@Column({ default: '' })
|
|
lastName: string;
|
|
|
|
@Field()
|
|
@Column()
|
|
email: string;
|
|
|
|
@Field({ nullable: true })
|
|
@Column({ nullable: true })
|
|
defaultAvatarUrl: string;
|
|
|
|
@Field()
|
|
@Column({ default: false })
|
|
emailVerified: boolean;
|
|
|
|
@Field({ nullable: true })
|
|
@Column({ default: false })
|
|
disabled: boolean;
|
|
|
|
@Field({ nullable: true })
|
|
@Column({ nullable: true })
|
|
passwordHash: string;
|
|
|
|
@Field()
|
|
@Column({ default: false })
|
|
canImpersonate: boolean;
|
|
|
|
@Field()
|
|
@CreateDateColumn({ type: 'timestamp with time zone' })
|
|
createdAt: Date;
|
|
|
|
@Field()
|
|
@UpdateDateColumn({ type: 'timestamp with time zone' })
|
|
updatedAt: Date;
|
|
|
|
@Field({ nullable: true })
|
|
@Column({ nullable: true })
|
|
deletedAt: Date;
|
|
|
|
@Field(() => Workspace, { nullable: false })
|
|
@ManyToOne(() => Workspace, (workspace) => workspace.users, {
|
|
onDelete: 'SET NULL',
|
|
})
|
|
defaultWorkspace: Workspace;
|
|
|
|
@Field({ nullable: true })
|
|
@Column({ nullable: true })
|
|
passwordResetToken: string;
|
|
|
|
@Field({ nullable: true })
|
|
@Column({ nullable: true })
|
|
passwordResetTokenExpiresAt: Date;
|
|
|
|
@OneToMany(() => RefreshToken, (refreshToken) => refreshToken.user, {
|
|
cascade: true,
|
|
})
|
|
refreshTokens: RefreshToken[];
|
|
|
|
@Field(() => WorkspaceMember, { nullable: true })
|
|
workspaceMember: WorkspaceMember;
|
|
}
|