53 lines
1.6 KiB
GraphQL
53 lines
1.6 KiB
GraphQL
# import Query.TeamConnection, Team from "./generated/prisma.graphql"
|
|
|
|
directive @isAuthenticated on QUERY | FIELD | MUTATION
|
|
directive @hasRole(roles: [String]) on QUERY | FIELD | MUTATION
|
|
directive @isOwner(type: String) on QUERY | MUTATION
|
|
directive @isOwnerOrHasRole(type: String, roles: [String]) on QUERY | MUTATION
|
|
|
|
type Query {
|
|
teams: TeamConnection
|
|
teamDetails: [Team!]! @isAuthenticated
|
|
teamByName(name: String!): Team
|
|
teamById(teamId: String!): Team
|
|
teamWithRole(teamId: String!, role: String!): Team
|
|
teamsByOwner(ownerId: String!): [Team!]! @isAuthenticated
|
|
teamsByRole: [Team!]! @isAuthenticated
|
|
fbByTeamMember: Team @isAuthenticated
|
|
owner: Member @isAuthenticated
|
|
currentMember: Member @isAuthenticated
|
|
member(authId: String!): Member @isAuthenticated
|
|
}
|
|
|
|
type Mutation {
|
|
authenticate(idToken: String!): Member
|
|
verifyTeamInvite(token: String!): TeamMembers
|
|
createTeam(name: String!, slug: String!, botName: String!, botSlug: String!): Team @isAuthenticated
|
|
updateTeamProfile(slug: String!, description: String, motto: String, avatar: String, banner: String): Team @isAuthenticated
|
|
updateFB(fbId: String!, avatar: String): FinancialBeings @isAuthenticated
|
|
deleteTeam(slug: String!): Team @isAuthenticated @isOwner(type: "Team")
|
|
sendMemberInviteSG(email: String!, teamId: String!): String
|
|
confirmMember(token: String!): String
|
|
removeTeamMember(teamId: String!, memberId: String!): String
|
|
}
|
|
|
|
fragment MemberInfo on Member {
|
|
id
|
|
authId
|
|
alias
|
|
isActive
|
|
profile {
|
|
...MemberProfileInfo
|
|
}
|
|
}
|
|
|
|
fragment MemberProfileInfo on MemberProfile {
|
|
firstName
|
|
lastName
|
|
email
|
|
avatar
|
|
role {
|
|
name
|
|
}
|
|
}
|