-
Notifications
You must be signed in to change notification settings - Fork 12
Expand file tree
/
Copy pathUserDataSource.ts
More file actions
109 lines (108 loc) · 3.73 KB
/
Copy pathUserDataSource.ts
File metadata and controls
109 lines (108 loc) · 3.73 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import { Country } from '../models/Country';
import { Institution } from '../models/Institution';
import { Role, Roles } from '../models/Role';
import { BasicUserDetails, User, UserRole } from '../models/User';
import { AddUserRoleArgs } from '../resolvers/mutations/AddUserRoleMutation';
import { CreateUserByEmailInviteArgs } from '../resolvers/mutations/CreateUserByEmailInviteMutation';
import {
UpdateUserByOidcSubArgs,
UpdateUserByIdArgs,
} from '../resolvers/mutations/UpdateUserMutation';
import { UsersArgs } from '../resolvers/queries/UsersQuery';
export interface UserDataSource {
delete(id: number): Promise<User | null>;
addUserRole(args: AddUserRoleArgs): Promise<boolean>;
createInviteUser(args: CreateUserByEmailInviteArgs): Promise<number>;
getBasicUserInfo(id: number): Promise<BasicUserDetails | null>;
getBasicUsersInfo(ids: readonly number[]): Promise<BasicUserDetails[]>;
getBasicUserDetailsByEmail(
email: string,
role?: UserRole,
currentRole?: UserRole
): Promise<BasicUserDetails | null>;
checkEmailExist(email: string): Promise<boolean>;
// Read
me(id: number): Promise<User | null>;
getUser(id: number): Promise<User | null>;
getUsersByUserNumbers(id: readonly number[]): Promise<User[]>;
getUserWithInstitution(id: number): Promise<{
user: User;
institution: Institution;
country: Country;
} | null>;
getByUsername(username: string): Promise<User | null>;
getByEmail(email: string): Promise<User | null>;
getByOIDCSub(sub: string): Promise<User | null>;
getUserRoles(id: number): Promise<Role[]>;
getUsers(
args: UsersArgs
): Promise<{ totalCount: number; users: BasicUserDetails[] }>;
getPreviousCollaborators(
user_id: number,
filter?: string,
first?: number,
offset?: number,
userRole?: UserRole,
subtractUsers?: [number]
): Promise<{ totalCount: number; users: BasicUserDetails[] }>;
getRoles(): Promise<Role[]>;
getProposalUsers(proposalPk: number): Promise<BasicUserDetails[]>;
getProposalUsersFull(proposalPk: number): Promise<User[]>;
getProposalUsersWithInstitution(proposalPk: number): Promise<
{
user: User;
institution: Institution;
country: Country;
}[]
>;
// Write
create(
user_title: string | undefined,
firstname: string,
lastname: string,
username: string,
preferredname: string | undefined,
oidc_sub: string,
oauth_refreshtoken: string,
oauth_issuer: string,
gender: string,
birthdate: Date,
institution: number,
department: string,
position: string,
email: string,
telephone: string
): Promise<User>;
ensureDummyUserExists(userId: number): Promise<User>;
ensureDummyUsersExist(userIds: number[]): Promise<User[]>;
createInstitution(
name: string,
countryId?: number,
rorId?: string
): Promise<number>;
update(user: UpdateUserByIdArgs): Promise<User>;
updateUserByOidcSub(args: UpdateUserByOidcSubArgs): Promise<User | null>;
setUserRoles(id: number, roles: number[]): Promise<void>;
setUserNotPlaceholder(id: number): Promise<User | null>;
checkScientistToProposal(
userId: number,
proposalPk: number
): Promise<boolean>;
checkInstrumentManagerToProposal(
userId: number,
proposalPk: number
): Promise<boolean>;
checkTechniqueScientistToProposal(
userId: number,
proposalPk: number
): Promise<boolean>;
getRoleByShortCode(roleShortCode: Roles): Promise<Role>;
mergeUsers(fromUserId: number, intoUserId: number): Promise<void>;
getApprovedProposalVisitorsWithInstitution(proposalPk: number): Promise<
{
user: User;
institution: Institution;
country: Country;
}[]
>;
}