Remove sending authId from Client

This commit is contained in:
Barry Low committed 2018-09-27 20:14:45 -07:00
1 parent fecbac5680
commit f97deb7946
19 files changed
+1859 -232

No files matched your search

+15 -4
View File
@@ -7,8 +7,9 @@ enum Role {
enum Status {
ACTIVE
INACTIVE
APPLY
INVITE
APPLIED
INVITED
REMOVED
}
enum FBType {
@@ -53,24 +54,34 @@ type TeamStatus {
}
type TeamMembers {
id: ID! @unique
member: Member @relation (name: "MemberOnTeam", onDelete: SET_NULL)
team: Team @relation (name: "TeamMembers", onDelete: SET_NULL)
role: Role @default(value: MEMBER)
status: [MemberStatus!]!
status: [TeamMemberStatus!]!
email: String
createdAt: DateTime!
updatedAt: DateTime!
}
type TeamMemberStatus {
status: Status @Default(value: INACTIVE)
reason: String
createdAt: DateTime!
}
type Member {
id: ID! @unique
alias: String
teams: [TeamMembers!]! @relation (name: "MemberOnTeam", onDelete: SET_NULL)
authId: String! @unique
visible: Boolean! @default(value: true)
status: [MemberStatus!]!
createdAt: DateTime!
}
type MemberStatus {
status: Status @Default(value: inactive)
status: Status @Default(value: INACTIVE)
reason: String
createdAt: DateTime!
}
+1358 -71
View File
File diff suppressed because it is too large. Load diff
+2 -1
View File
@@ -8,6 +8,7 @@
},
"dependencies": {
"@azure/storage-blob": "^10.0.0-preview",
"axios": "^0.18.0",
"azure-storage": "^2.10.1",
"cors": "^2.8.4",
"debug": "^4.0.1",
@@ -27,6 +28,6 @@
"devDependencies": {
"graphql-cli": "^2.16.5",
"npm-run-all": "4.1.3",
"prisma": "^1.16.4"
"prisma": "^1.17.1"
}
}
+401 -28
View File
@@ -1,5 +1,5 @@
# source: http://localhost:4466
# timestamp: Wed Sep 26 2018 23:15:45 GMT-0700 (Pacific Daylight Time)
# timestamp: Thu Sep 27 2018 08:38:09 GMT-0700 (Pacific Daylight Time)
type AggregateFBStatus {
count: Int!
@@ -25,6 +25,10 @@ type AggregateTeamMembers {
count: Int!
}
type AggregateTeamMemberStatus {
count: Int!
}
type AggregateTeamProfile {
count: Int!
}
@@ -516,6 +520,7 @@ type Member implements Node {
teams(where: TeamMembersWhereInput, orderBy: TeamMembersOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [TeamMembers!]
authId: String!
visible: Boolean!
status(where: MemberStatusWhereInput, orderBy: MemberStatusOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [MemberStatus!]
createdAt: DateTime!
}
@@ -534,6 +539,7 @@ input MemberCreateInput {
authId: String!
visible: Boolean
teams: TeamMembersCreateManyWithoutMemberInput
status: MemberStatusCreateManyInput
}
input MemberCreateOneWithoutTeamsInput {
@@ -545,6 +551,7 @@ input MemberCreateWithoutTeamsInput {
alias: String
authId: String!
visible: Boolean
status: MemberStatusCreateManyInput
}
"""An edge in a connection."""
@@ -807,6 +814,7 @@ input MemberUpdateInput {
authId: String
visible: Boolean
teams: TeamMembersUpdateManyWithoutMemberInput
status: MemberStatusUpdateManyInput
}
input MemberUpdateOneWithoutTeamsInput {
@@ -822,6 +830,7 @@ input MemberUpdateWithoutTeamsDataInput {
alias: String
authId: String
visible: Boolean
status: MemberStatusUpdateManyInput
}
input MemberUpsertWithoutTeamsInput {
@@ -987,6 +996,9 @@ input MemberWhereInput {
teams_every: TeamMembersWhereInput
teams_some: TeamMembersWhereInput
teams_none: TeamMembersWhereInput
status_every: MemberStatusWhereInput
status_some: MemberStatusWhereInput
status_none: MemberStatusWhereInput
}
input MemberWhereUniqueInput {
@@ -1001,16 +1013,20 @@ type Mutation {
createFinancialBeings(data: FinancialBeingsCreateInput!): FinancialBeings!
createTeamProfile(data: TeamProfileCreateInput!): TeamProfile!
createWallet(data: WalletCreateInput!): Wallet!
createFBStatus(data: FBStatusCreateInput!): FBStatus!
createTeamStatus(data: TeamStatusCreateInput!): TeamStatus!
createMemberStatus(data: MemberStatusCreateInput!): MemberStatus!
createFBStatus(data: FBStatusCreateInput!): FBStatus!
createTeamMemberStatus(data: TeamMemberStatusCreateInput!): TeamMemberStatus!
createTeamStatus(data: TeamStatusCreateInput!): TeamStatus!
updateTeam(data: TeamUpdateInput!, where: TeamWhereUniqueInput!): Team
updateTeamMembers(data: TeamMembersUpdateInput!, where: TeamMembersWhereUniqueInput!): TeamMembers
updateMember(data: MemberUpdateInput!, where: MemberWhereUniqueInput!): Member
updateFinancialBeings(data: FinancialBeingsUpdateInput!, where: FinancialBeingsWhereUniqueInput!): FinancialBeings
deleteTeam(where: TeamWhereUniqueInput!): Team
deleteTeamMembers(where: TeamMembersWhereUniqueInput!): TeamMembers
deleteMember(where: MemberWhereUniqueInput!): Member
deleteFinancialBeings(where: FinancialBeingsWhereUniqueInput!): FinancialBeings
upsertTeam(where: TeamWhereUniqueInput!, create: TeamCreateInput!, update: TeamUpdateInput!): Team!
upsertTeamMembers(where: TeamMembersWhereUniqueInput!, create: TeamMembersCreateInput!, update: TeamMembersUpdateInput!): TeamMembers!
upsertMember(where: MemberWhereUniqueInput!, create: MemberCreateInput!, update: MemberUpdateInput!): Member!
upsertFinancialBeings(where: FinancialBeingsWhereUniqueInput!, create: FinancialBeingsCreateInput!, update: FinancialBeingsUpdateInput!): FinancialBeings!
updateManyTeams(data: TeamUpdateInput!, where: TeamWhereInput): BatchPayload!
@@ -1019,18 +1035,20 @@ type Mutation {
updateManyFinancialBeingses(data: FinancialBeingsUpdateInput!, where: FinancialBeingsWhereInput): BatchPayload!
updateManyTeamProfiles(data: TeamProfileUpdateInput!, where: TeamProfileWhereInput): BatchPayload!
updateManyWallets(data: WalletUpdateInput!, where: WalletWhereInput): BatchPayload!
updateManyFBStatuses(data: FBStatusUpdateInput!, where: FBStatusWhereInput): BatchPayload!
updateManyTeamStatuses(data: TeamStatusUpdateInput!, where: TeamStatusWhereInput): BatchPayload!
updateManyMemberStatuses(data: MemberStatusUpdateInput!, where: MemberStatusWhereInput): BatchPayload!
updateManyFBStatuses(data: FBStatusUpdateInput!, where: FBStatusWhereInput): BatchPayload!
updateManyTeamMemberStatuses(data: TeamMemberStatusUpdateInput!, where: TeamMemberStatusWhereInput): BatchPayload!
updateManyTeamStatuses(data: TeamStatusUpdateInput!, where: TeamStatusWhereInput): BatchPayload!
deleteManyTeams(where: TeamWhereInput): BatchPayload!
deleteManyTeamMemberses(where: TeamMembersWhereInput): BatchPayload!
deleteManyMembers(where: MemberWhereInput): BatchPayload!
deleteManyFinancialBeingses(where: FinancialBeingsWhereInput): BatchPayload!
deleteManyTeamProfiles(where: TeamProfileWhereInput): BatchPayload!
deleteManyWallets(where: WalletWhereInput): BatchPayload!
deleteManyFBStatuses(where: FBStatusWhereInput): BatchPayload!
deleteManyTeamStatuses(where: TeamStatusWhereInput): BatchPayload!
deleteManyMemberStatuses(where: MemberStatusWhereInput): BatchPayload!
deleteManyFBStatuses(where: FBStatusWhereInput): BatchPayload!
deleteManyTeamMemberStatuses(where: TeamMemberStatusWhereInput): BatchPayload!
deleteManyTeamStatuses(where: TeamStatusWhereInput): BatchPayload!
}
enum MutationType {
@@ -1067,10 +1085,12 @@ type Query {
financialBeingses(where: FinancialBeingsWhereInput, orderBy: FinancialBeingsOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [FinancialBeings]!
teamProfiles(where: TeamProfileWhereInput, orderBy: TeamProfileOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [TeamProfile]!
wallets(where: WalletWhereInput, orderBy: WalletOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [Wallet]!
fBStatuses(where: FBStatusWhereInput, orderBy: FBStatusOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [FBStatus]!
teamStatuses(where: TeamStatusWhereInput, orderBy: TeamStatusOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [TeamStatus]!
memberStatuses(where: MemberStatusWhereInput, orderBy: MemberStatusOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [MemberStatus]!
fBStatuses(where: FBStatusWhereInput, orderBy: FBStatusOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [FBStatus]!
teamMemberStatuses(where: TeamMemberStatusWhereInput, orderBy: TeamMemberStatusOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [TeamMemberStatus]!
teamStatuses(where: TeamStatusWhereInput, orderBy: TeamStatusOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [TeamStatus]!
team(where: TeamWhereUniqueInput!): Team
teamMembers(where: TeamMembersWhereUniqueInput!): TeamMembers
member(where: MemberWhereUniqueInput!): Member
financialBeings(where: FinancialBeingsWhereUniqueInput!): FinancialBeings
teamsConnection(where: TeamWhereInput, orderBy: TeamOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): TeamConnection!
@@ -1079,9 +1099,10 @@ type Query {
financialBeingsesConnection(where: FinancialBeingsWhereInput, orderBy: FinancialBeingsOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): FinancialBeingsConnection!
teamProfilesConnection(where: TeamProfileWhereInput, orderBy: TeamProfileOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): TeamProfileConnection!
walletsConnection(where: WalletWhereInput, orderBy: WalletOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): WalletConnection!
fBStatusesConnection(where: FBStatusWhereInput, orderBy: FBStatusOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): FBStatusConnection!
teamStatusesConnection(where: TeamStatusWhereInput, orderBy: TeamStatusOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): TeamStatusConnection!
memberStatusesConnection(where: MemberStatusWhereInput, orderBy: MemberStatusOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): MemberStatusConnection!
fBStatusesConnection(where: FBStatusWhereInput, orderBy: FBStatusOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): FBStatusConnection!
teamMemberStatusesConnection(where: TeamMemberStatusWhereInput, orderBy: TeamMemberStatusOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): TeamMemberStatusConnection!
teamStatusesConnection(where: TeamStatusWhereInput, orderBy: TeamStatusOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): TeamStatusConnection!
"""Fetches an object given its ID"""
node(
@@ -1099,8 +1120,9 @@ enum Role {
enum Status {
ACTIVE
INACTIVE
APPLY
INVITE
APPLIED
INVITED
REMOVED
}
type Subscription {
@@ -1110,9 +1132,10 @@ type Subscription {
financialBeings(where: FinancialBeingsSubscriptionWhereInput): FinancialBeingsSubscriptionPayload
teamProfile(where: TeamProfileSubscriptionWhereInput): TeamProfileSubscriptionPayload
wallet(where: WalletSubscriptionWhereInput): WalletSubscriptionPayload
fBStatus(where: FBStatusSubscriptionWhereInput): FBStatusSubscriptionPayload
teamStatus(where: TeamStatusSubscriptionWhereInput): TeamStatusSubscriptionPayload
memberStatus(where: MemberStatusSubscriptionWhereInput): MemberStatusSubscriptionPayload
fBStatus(where: FBStatusSubscriptionWhereInput): FBStatusSubscriptionPayload
teamMemberStatus(where: TeamMemberStatusSubscriptionWhereInput): TeamMemberStatusSubscriptionPayload
teamStatus(where: TeamStatusSubscriptionWhereInput): TeamStatusSubscriptionPayload
}
type Team implements Node {
@@ -1188,11 +1211,14 @@ type TeamEdge {
cursor: String!
}
type TeamMembers {
type TeamMembers implements Node {
id: ID!
member(where: MemberWhereInput): Member
team(where: TeamWhereInput): Team
role: Role
status(where: MemberStatusWhereInput, orderBy: MemberStatusOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [MemberStatus!]
status(where: TeamMemberStatusWhereInput, orderBy: TeamMemberStatusOrderByInput, skip: Int, after: String, before: String, first: Int, last: Int): [TeamMemberStatus!]
email: String
createdAt: DateTime!
updatedAt: DateTime!
}
@@ -1208,29 +1234,34 @@ type TeamMembersConnection {
input TeamMembersCreateInput {
role: Role
email: String
member: MemberCreateOneWithoutTeamsInput
team: TeamCreateOneWithoutMembersInput
status: MemberStatusCreateManyInput
status: TeamMemberStatusCreateManyInput
}
input TeamMembersCreateManyWithoutMemberInput {
create: [TeamMembersCreateWithoutMemberInput!]
connect: [TeamMembersWhereUniqueInput!]
}
input TeamMembersCreateManyWithoutTeamInput {
create: [TeamMembersCreateWithoutTeamInput!]
connect: [TeamMembersWhereUniqueInput!]
}
input TeamMembersCreateWithoutMemberInput {
role: Role
email: String
team: TeamCreateOneWithoutMembersInput
status: MemberStatusCreateManyInput
status: TeamMemberStatusCreateManyInput
}
input TeamMembersCreateWithoutTeamInput {
role: Role
email: String
member: MemberCreateOneWithoutTeamsInput
status: MemberStatusCreateManyInput
status: TeamMemberStatusCreateManyInput
}
"""An edge in a connection."""
@@ -1243,18 +1274,23 @@ type TeamMembersEdge {
}
enum TeamMembersOrderByInput {
role_ASC
role_DESC
updatedAt_ASC
updatedAt_DESC
id_ASC
id_DESC
role_ASC
role_DESC
email_ASC
email_DESC
createdAt_ASC
createdAt_DESC
updatedAt_ASC
updatedAt_DESC
}
type TeamMembersPreviousValues {
id: ID!
role: Role
email: String
createdAt: DateTime!
updatedAt: DateTime!
}
@@ -1297,19 +1333,250 @@ input TeamMembersSubscriptionWhereInput {
node: TeamMembersWhereInput
}
type TeamMemberStatus {
status: Status
reason: String
createdAt: DateTime!
}
"""A connection to a list of items."""
type TeamMemberStatusConnection {
"""Information to aid in pagination."""
pageInfo: PageInfo!
"""A list of edges."""
edges: [TeamMemberStatusEdge]!
aggregate: AggregateTeamMemberStatus!
}
input TeamMemberStatusCreateInput {
status: Status
reason: String
}
input TeamMemberStatusCreateManyInput {
create: [TeamMemberStatusCreateInput!]
}
"""An edge in a connection."""
type TeamMemberStatusEdge {
"""The item at the end of the edge."""
node: TeamMemberStatus!
"""A cursor for use in pagination."""
cursor: String!
}
enum TeamMemberStatusOrderByInput {
status_ASC
status_DESC
reason_ASC
reason_DESC
createdAt_ASC
createdAt_DESC
id_ASC
id_DESC
updatedAt_ASC
updatedAt_DESC
}
type TeamMemberStatusPreviousValues {
status: Status
reason: String
createdAt: DateTime!
}
type TeamMemberStatusSubscriptionPayload {
mutation: MutationType!
node: TeamMemberStatus
updatedFields: [String!]
previousValues: TeamMemberStatusPreviousValues
}
input TeamMemberStatusSubscriptionWhereInput {
"""Logical AND on all given filters."""
AND: [TeamMemberStatusSubscriptionWhereInput!]
"""Logical OR on all given filters."""
OR: [TeamMemberStatusSubscriptionWhereInput!]
"""Logical NOT on all given filters combined by AND."""
NOT: [TeamMemberStatusSubscriptionWhereInput!]
"""
The subscription event gets dispatched when it's listed in mutation_in
"""
mutation_in: [MutationType!]
"""
The subscription event gets only dispatched when one of the updated fields names is included in this list
"""
updatedFields_contains: String
"""
The subscription event gets only dispatched when all of the field names included in this list have been updated
"""
updatedFields_contains_every: [String!]
"""
The subscription event gets only dispatched when some of the field names included in this list have been updated
"""
updatedFields_contains_some: [String!]
node: TeamMemberStatusWhereInput
}
input TeamMemberStatusUpdateInput {
status: Status
reason: String
}
input TeamMemberStatusUpdateManyInput {
create: [TeamMemberStatusCreateInput!]
}
input TeamMemberStatusWhereInput {
"""Logical AND on all given filters."""
AND: [TeamMemberStatusWhereInput!]
"""Logical OR on all given filters."""
OR: [TeamMemberStatusWhereInput!]
"""Logical NOT on all given filters combined by AND."""
NOT: [TeamMemberStatusWhereInput!]
status: Status
"""All values that are not equal to given value."""
status_not: Status
"""All values that are contained in given list."""
status_in: [Status!]
"""All values that are not contained in given list."""
status_not_in: [Status!]
reason: String
"""All values that are not equal to given value."""
reason_not: String
"""All values that are contained in given list."""
reason_in: [String!]
"""All values that are not contained in given list."""
reason_not_in: [String!]
"""All values less than the given value."""
reason_lt: String
"""All values less than or equal the given value."""
reason_lte: String
"""All values greater than the given value."""
reason_gt: String
"""All values greater than or equal the given value."""
reason_gte: String
"""All values containing the given string."""
reason_contains: String
"""All values not containing the given string."""
reason_not_contains: String
"""All values starting with the given string."""
reason_starts_with: String
"""All values not starting with the given string."""
reason_not_starts_with: String
"""All values ending with the given string."""
reason_ends_with: String
"""All values not ending with the given string."""
reason_not_ends_with: String
createdAt: DateTime
"""All values that are not equal to given value."""
createdAt_not: DateTime
"""All values that are contained in given list."""
createdAt_in: [DateTime!]
"""All values that are not contained in given list."""
createdAt_not_in: [DateTime!]
"""All values less than the given value."""
createdAt_lt: DateTime
"""All values less than or equal the given value."""
createdAt_lte: DateTime
"""All values greater than the given value."""
createdAt_gt: DateTime
"""All values greater than or equal the given value."""
createdAt_gte: DateTime
}
input TeamMembersUpdateInput {
role: Role
email: String
member: MemberUpdateOneWithoutTeamsInput
team: TeamUpdateOneWithoutMembersInput
status: MemberStatusUpdateManyInput
status: TeamMemberStatusUpdateManyInput
}
input TeamMembersUpdateManyWithoutMemberInput {
create: [TeamMembersCreateWithoutMemberInput!]
connect: [TeamMembersWhereUniqueInput!]
disconnect: [TeamMembersWhereUniqueInput!]
delete: [TeamMembersWhereUniqueInput!]
update: [TeamMembersUpdateWithWhereUniqueWithoutMemberInput!]
upsert: [TeamMembersUpsertWithWhereUniqueWithoutMemberInput!]
}
input TeamMembersUpdateManyWithoutTeamInput {
create: [TeamMembersCreateWithoutTeamInput!]
connect: [TeamMembersWhereUniqueInput!]
disconnect: [TeamMembersWhereUniqueInput!]
delete: [TeamMembersWhereUniqueInput!]
update: [TeamMembersUpdateWithWhereUniqueWithoutTeamInput!]
upsert: [TeamMembersUpsertWithWhereUniqueWithoutTeamInput!]
}
input TeamMembersUpdateWithoutMemberDataInput {
role: Role
email: String
team: TeamUpdateOneWithoutMembersInput
status: TeamMemberStatusUpdateManyInput
}
input TeamMembersUpdateWithoutTeamDataInput {
role: Role
email: String
member: MemberUpdateOneWithoutTeamsInput
status: TeamMemberStatusUpdateManyInput
}
input TeamMembersUpdateWithWhereUniqueWithoutMemberInput {
where: TeamMembersWhereUniqueInput!
data: TeamMembersUpdateWithoutMemberDataInput!
}
input TeamMembersUpdateWithWhereUniqueWithoutTeamInput {
where: TeamMembersWhereUniqueInput!
data: TeamMembersUpdateWithoutTeamDataInput!
}
input TeamMembersUpsertWithWhereUniqueWithoutMemberInput {
where: TeamMembersWhereUniqueInput!
update: TeamMembersUpdateWithoutMemberDataInput!
create: TeamMembersCreateWithoutMemberInput!
}
input TeamMembersUpsertWithWhereUniqueWithoutTeamInput {
where: TeamMembersWhereUniqueInput!
update: TeamMembersUpdateWithoutTeamDataInput!
create: TeamMembersCreateWithoutTeamInput!
}
input TeamMembersWhereInput {
@@ -1321,6 +1588,46 @@ input TeamMembersWhereInput {
"""Logical NOT on all given filters combined by AND."""
NOT: [TeamMembersWhereInput!]
id: ID
"""All values that are not equal to given value."""
id_not: ID
"""All values that are contained in given list."""
id_in: [ID!]
"""All values that are not contained in given list."""
id_not_in: [ID!]
"""All values less than the given value."""
id_lt: ID
"""All values less than or equal the given value."""
id_lte: ID
"""All values greater than the given value."""
id_gt: ID
"""All values greater than or equal the given value."""
id_gte: ID
"""All values containing the given string."""
id_contains: ID
"""All values not containing the given string."""
id_not_contains: ID
"""All values starting with the given string."""
id_starts_with: ID
"""All values not starting with the given string."""
id_not_starts_with: ID
"""All values ending with the given string."""
id_ends_with: ID
"""All values not ending with the given string."""
id_not_ends_with: ID
role: Role
"""All values that are not equal to given value."""
@@ -1331,6 +1638,68 @@ input TeamMembersWhereInput {
"""All values that are not contained in given list."""
role_not_in: [Role!]
email: String
"""All values that are not equal to given value."""
email_not: String
"""All values that are contained in given list."""
email_in: [String!]
"""All values that are not contained in given list."""
email_not_in: [String!]
"""All values less than the given value."""
email_lt: String
"""All values less than or equal the given value."""
email_lte: String
"""All values greater than the given value."""
email_gt: String
"""All values greater than or equal the given value."""
email_gte: String
"""All values containing the given string."""
email_contains: String
"""All values not containing the given string."""
email_not_contains: String
"""All values starting with the given string."""
email_starts_with: String
"""All values not starting with the given string."""
email_not_starts_with: String
"""All values ending with the given string."""
email_ends_with: String
"""All values not ending with the given string."""
email_not_ends_with: String
createdAt: DateTime
"""All values that are not equal to given value."""
createdAt_not: DateTime
"""All values that are contained in given list."""
createdAt_in: [DateTime!]
"""All values that are not contained in given list."""
createdAt_not_in: [DateTime!]
"""All values less than the given value."""
createdAt_lt: DateTime
"""All values less than or equal the given value."""
createdAt_lte: DateTime
"""All values greater than the given value."""
createdAt_gt: DateTime
"""All values greater than or equal the given value."""
createdAt_gte: DateTime
updatedAt: DateTime
"""All values that are not equal to given value."""
@@ -1355,9 +1724,13 @@ input TeamMembersWhereInput {
updatedAt_gte: DateTime
member: MemberWhereInput
team: TeamWhereInput
status_every: MemberStatusWhereInput
status_some: MemberStatusWhereInput
status_none: MemberStatusWhereInput
status_every: TeamMemberStatusWhereInput
status_some: TeamMemberStatusWhereInput
status_none: TeamMemberStatusWhereInput
}
input TeamMembersWhereUniqueInput {
id: ID
}
enum TeamOrderByInput {
+15 -5
View File
@@ -87,9 +87,18 @@ const resolvers = {
async teamByName(parent, { name }, ctx, info) {
return ctx.db.query.team({ where: { name: name } }, `{ name }`)
},
async teamsByOwner(parent, { ownerId }, ctx, info) {
console.log('teamsByOwner: ', ctx.user)
return ctx.db.query.teams({where: { owner: ownerId }, orderBy:'updatedAt_DESC'}, TEAMS_FRAGMENT)
async teamWithRole(parent, { teamId, role }, ctx, info) {
return ctx.db.query.teamsConnection({where: {AND: [{id: teamId},{members_some:{role: role}}]}, first:1}, info)
},
async teamsByOwner(parent, args, ctx, info) {
const authId = ctx.request.user.sub
return ctx.db.query.teams({where: { owner: authId }, orderBy:'updatedAt_DESC'}, TEAMS_FRAGMENT)
},
async teamsByRole(parent, args, ctx, info) {
const authId = ctx.request.user.sub
let teamAdmin = await ctx.db.query.teams({where: {members_some: {OR: [{role: 'ADMIN'}, {role: 'OWNER'}], AND: [{member: {authId: authId}}]}}, orderBy: 'updatedAt_DESC'}, TEAMS_FRAGMENT)
console.log('teamsByRole teamAdmin: ', teamAdmin)
return teamAdmin
},
async owner(parent, args, ctx, info) {
console.log('resolver.query.owner ctx: ', ctxMember(ctx))
@@ -124,8 +133,9 @@ const resolvers = {
}
return member
},
async createTeam(parent, { name, slug, owner }, ctx, info) {
return ctx.db.mutation.createTeam({ data: { name: name, slug: slug, owner: owner, members: { create: { member:{ connect:{ authId: owner} }, role: 'OWNER' } }, profile:{create:{avatar:"a"} } } }, TEAMS_FRAGMENT)
async createTeam(parent, { name, slug }, ctx, info) {
const authId = ctx.request.user.sub
return ctx.db.mutation.createTeam({ data: { name: name, slug: slug, owner: authId, members: { create: { member:{ connect:{ authId: authId} }, role: 'OWNER' } }, profile:{create:{avatar:"a"} } } }, TEAMS_FRAGMENT)
.catch((err) => {
console.log('createTeam error: ', err)
return err
+8 -3
View File
@@ -10,7 +10,9 @@ type Query {
teamDetails: [Team!]! @isAuthenticated
teamByName(name: String!): Team
teamById(teamId: String!): Team
teamsByOwner(ownerId: String!): [Team!]! @isAuthenticated
teamWithRole(teamId: String!, role: String!): Team
teamsByOwner: [Team!]! @isAuthenticated
teamsByRole: [Team!]! @isAuthenticated
owner: Member @isAuthenticated
currentMember: Member @isAuthenticated
member(authId: String!): Member @isAuthenticated
@@ -18,10 +20,13 @@ type Query {
type Mutation {
authenticate(idToken: String!): Member
createTeam(name: String!, slug: String!, owner: String!): Team @isAuthenticated
updateTeamProfile(slug: String!, owner: String!, description: String, motto: String, avatar: String, banner: String): Team @isAuthenticated
createTeam(name: String!, slug: String!): Team @isAuthenticated
updateTeamProfile(slug: String!, description: String, motto: String, avatar: String, banner: String): Team @isAuthenticated
deleteTeam(slug: String!): Team @isAuthenticated @isOwner(type: "Team")
getAzureSAS(teamSlug: String!):String
sendMemberInviteSG(email: String!, teamId: String!): String
confirmMember(token: String!): String
removeMember(email: String!, teamId: String!): String
}
fragment MemberInfo on Member {
+1 -1
View File
@@ -64,7 +64,7 @@ wsClient.onReconnected(() => {
})
const httpLink = new HttpLink({ uri: graphqlEndpoint })
const httpUserLink = new HttpLink({ uri: 'http://104.43.240.255:4000/graphql' })
const httpUserLink = new HttpLink({ uri: 'https://users-api.advancedalgos.net/graphql' })
const link = split(
({ query }) => {
@@ -2,8 +2,8 @@
import gql from 'graphql-tag'
const CREATE_TEAM = gql`
mutation CreateTeamMutation($name: String!, $slug: String!, $owner: String!) {
createTeam(name: $name, slug: $slug, owner: $owner) {
mutation CreateTeamMutation($name: String!, $slug: String!) {
createTeam(name: $name, slug: $slug) {
id
name
slug
@@ -2,8 +2,8 @@
import gql from 'graphql-tag'
export const GET_TEAMS_BY_OWNER = gql`
query teamsByOwnerQuery($authId: String!) {
teamsByOwner(ownerId: $authId) {
query teamsByOwnerQuery {
teamsByOwner {
id
name
slug
@@ -4,7 +4,6 @@ import gql from 'graphql-tag'
const UPDATE_TEAM_PROFILE = gql`
mutation UpdateTeamProfileMutation(
$slug: String!,
$owner: String!,
$description: String,
$motto: String,
$avatar: String,
@@ -12,7 +11,6 @@ const UPDATE_TEAM_PROFILE = gql`
) {
updateTeamProfile(
slug: $slug,
owner: $owner,
description: $description,
motto: $motto
avatar: $avatar,
+2 -3
View File
@@ -111,7 +111,7 @@ class UploadImage extends Component {
}
render () {
const { classes, team, authId, handleAvatar, handleBanner } = this.props
const { classes, team, handleAvatar, handleBanner } = this.props
let avatar = null
let banner = null
if ((team.profile !== null && team.profile.avatar !== undefined && team.profile.avatar !== null && team.profile.avatar !== 'a') || this.state.avatarImage !== null) {
@@ -128,7 +128,7 @@ class UploadImage extends Component {
let handleImage
this.state.edit === 'avatar' ? handleImage = handleAvatar : handleImage = handleBanner
console.log('UploadImage', team, avatar, banner, authId, this.state)
console.log('UploadImage', team, avatar, banner, this.state)
return (
<div className={classes.dropzoneContainer}>
<Mutation mutation={GET_AZURE_SAS} >
@@ -337,7 +337,6 @@ class UploadImage extends Component {
UploadImage.propTypes = {
classes: PropTypes.object.isRequired,
team: PropTypes.object,
authId: PropTypes.string.isRequired,
handleAvatar: PropTypes.func.isRequired,
handleBanner: PropTypes.func.isRequired
}
@@ -56,16 +56,11 @@ export class CreateTeamDialog extends Component {
}
render () {
const { classes, authId } = this.props
const { classes } = this.props
return (
<Mutation
mutation={CREATE_TEAM}
refetchQueries={[
{
query: GET_TEAMS_BY_OWNER,
variables: { authId }
}
]}
refetchQueries={[{ query: GET_TEAMS_BY_OWNER }]}
>
{(createTeam, { loading, error, data }) => {
let errors
@@ -131,7 +126,7 @@ export class CreateTeamDialog extends Component {
</Button>
<Button
onClick={e => {
this.handleSubmit(e, createTeam, this.state.name, authId)
this.handleSubmit(e, createTeam, this.state.name)
}}
color='primary'
>
@@ -169,7 +164,7 @@ export class CreateTeamDialog extends Component {
e.preventDefault()
console.log('createTeam submit: ', authId, name)
const slug = this.slugify(name)
await createTeam({ variables: { name, slug, owner: authId } })
await createTeam({ variables: { name, slug } })
this.setState({ name: '', open: false })
}
@@ -198,8 +193,7 @@ export class CreateTeamDialog extends Component {
}
CreateTeamDialog.propTypes = {
classes: PropTypes.object.isRequired,
authId: PropTypes.string
classes: PropTypes.object.isRequired
}
export default withStyles(styles)(CreateTeamDialog)
@@ -1,7 +1,6 @@
import React from 'react'
import PropTypes from 'prop-types'
import { Query } from 'react-apollo'
import { withStateHandlers, lifecycle, compose } from 'recompose'
import { Link } from 'react-router-dom'
import Typography from '@material-ui/core/Typography'
@@ -13,32 +12,7 @@ import DashTeamItem from './DashTeamItem'
import CreateTeamDialog from './CreateTeamDialog'
import { MessageCard } from '../../common/'
import { isDefined, isString } from '../../../utils/js-helpers'
import { getItem } from '../../../utils/local-storage'
export const DashTeam = ({ classes, user = null }) => {
let owner
let loader
let authId = null
console.log('DashTeam: ', user)
if (user !== null && isString(user)) {
owner = JSON.parse(user)
if (isDefined(owner.authId)) authId = owner.authId
} else {
loader = <Typography variant='caption'>Loading...</Typography>
}
console.log('DashTeam 2: ', owner, authId)
if (authId === undefined || authId === null) {
return (
<Grid item md={6}>
<Typography variant='display1' gutterBottom>
Teams
</Typography>
<Typography variant='caption'>Loading...</Typography>
</Grid>
)
}
export const DashTeam = ({ classes }) => {
return (
<Grid item md={6} style={{ position: 'relative' }}>
<Typography variant='display1' gutterBottom>
@@ -47,7 +21,7 @@ export const DashTeam = ({ classes, user = null }) => {
Manage Teams
</Link>
</Typography>
<Query query={GET_TEAMS_BY_OWNER} variables={{ authId }}>
<Query query={GET_TEAMS_BY_OWNER}>
{({ loading, error, data }) => {
console.log('GET_TEAMS_BY_OWNER: ', loading, error, data)
let errors
@@ -71,7 +45,6 @@ export const DashTeam = ({ classes, user = null }) => {
))}
{queryLoader}
{errors}
{loader}
</Grid>
)
} else {
@@ -79,7 +52,7 @@ export const DashTeam = ({ classes, user = null }) => {
<Grid container spacing={40}>
<Grid item xs={10}>
<MessageCard message='No teams yet...'>
<CreateTeamDialog authId={authId} />
<CreateTeamDialog />
</MessageCard>
</Grid>
</Grid>
@@ -103,25 +76,7 @@ export const DashTeam = ({ classes, user = null }) => {
}
DashTeam.propTypes = {
user: PropTypes.any,
classes: PropTypes.object.isRequired
}
const getUserOnMount = lifecycle({
componentDidMount () {
getItem('user').then(user => {
this.setState({ user })
}) // Set user to state
}
})
const mapStateToProps = withStateHandlers(() => ({ user: null }), {
user: ({ user }) => () => ({ user })
})
const DashTeamAuthId = compose(
mapStateToProps,
getUserOnMount
)(DashTeam)
export default DashTeamAuthId
export default DashTeam
@@ -35,32 +35,39 @@ const styles = theme => ({
}
})
export const DashTeamItem = ({ classes, team }) => (
<Grid item>
<Card className={classes.card}>
<div className={classes.cardDetails}>
<CardMedia
className={classes.cardMedia}
image='data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%22288%22%20height%3D%22225%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20288%20225%22%20preserveAspectRatio%3D%22none%22%3E%3Cdefs%3E%3Cstyle%20type%3D%22text%2Fcss%22%3E%23holder_164edaf95ee%20text%20%7B%20fill%3A%23eceeef%3Bfont-weight%3Abold%3Bfont-family%3AArial%2C%20Helvetica%2C%20Open%20Sans%2C%20sans-serif%2C%20monospace%3Bfont-size%3A14pt%20%7D%20%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cg%20id%3D%22holder_164edaf95ee%22%3E%3Crect%20width%3D%22288%22%20height%3D%22225%22%20fill%3D%22%2355595c%22%3E%3C%2Frect%3E%3Cg%3E%3Ctext%20x%3D%2296.32500076293945%22%20y%3D%22118.8%22%3EThumbnail%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E' // eslint-disable-line max-len
title='Image title'
/>
<CardContent className={classes.cardContent}>
<Typography variant='headline'>{team.name}</Typography>
<Typography variant='subheading' color='textSecondary'>
{team.createdAt}
</Typography>
<Typography variant='subheading' paragraph>
Members: {team.members.length}
</Typography>
</CardContent>
<CardActions>
<ManageTeamDetails team={team} />
</CardActions>
</div>
</Card>
</Grid>
)
export const DashTeamItem = ({ classes, team }) => {
let avatar
if (team.profile.avatar !== undefined && team.profile.avatar !== 'a') {
avatar = team.profile.avatar
} else {
avatar = 'data:image/svg+xml;charset=UTF-8,%3Csvg%20width%3D%22288%22%20height%3D%22225%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20288%20225%22%20preserveAspectRatio%3D%22none%22%3E%3Cdefs%3E%3Cstyle%20type%3D%22text%2Fcss%22%3E%23holder_164edaf95ee%20text%20%7B%20fill%3A%23eceeef%3Bfont-weight%3Abold%3Bfont-family%3AArial%2C%20Helvetica%2C%20Open%20Sans%2C%20sans-serif%2C%20monospace%3Bfont-size%3A14pt%20%7D%20%3C%2Fstyle%3E%3C%2Fdefs%3E%3Cg%20id%3D%22holder_164edaf95ee%22%3E%3Crect%20width%3D%22288%22%20height%3D%22225%22%20fill%3D%22%2355595c%22%3E%3C%2Frect%3E%3Cg%3E%3Ctext%20x%3D%2296.32500076293945%22%20y%3D%22118.8%22%3EThumbnail%3C%2Ftext%3E%3C%2Fg%3E%3C%2Fg%3E%3C%2Fsvg%3E'
}
return (
<Grid item>
<Card className={classes.card}>
<div className={classes.cardDetails}>
<CardMedia
className={classes.cardMedia}
image={avatar}
title={team.name}
/>
<CardContent className={classes.cardContent}>
<Typography variant='headline'>{team.name}</Typography>
<Typography variant='subheading' color='textSecondary'>
{team.createdAt}
</Typography>
<Typography variant='subheading' paragraph>
Members: {team.members.length}
</Typography>
</CardContent>
<CardActions>
<ManageTeamDetails team={team} />
</CardActions>
</div>
</Card>
</Grid>
)
}
DashTeamItem.propTypes = {
classes: PropTypes.object.isRequired,
team: PropTypes.object.isRequired
@@ -55,14 +55,13 @@ export class ManageTeamDelete extends Component {
render () {
console.log(this.props, this.props.slug)
const { classes, authId } = this.props
const { classes } = this.props
return (
<Mutation
mutation={DELETE_TEAM}
refetchQueries={[
{
query: GET_TEAMS_BY_OWNER,
variables: { authId }
query: GET_TEAMS_BY_OWNER
}
]}
>
@@ -123,8 +122,7 @@ export class ManageTeamDelete extends Component {
this.handleSubmit(
e,
deleteTeam,
this.props.slug,
authId
this.props.slug
)
}}
color='primary'
@@ -141,17 +139,16 @@ export class ManageTeamDelete extends Component {
)
}
async handleSubmit (e, deleteTeam, slug, authId) {
async handleSubmit (e, deleteTeam, slug) {
e.preventDefault()
await deleteTeam({ variables: { slug, owner: authId } })
await deleteTeam({ variables: { slug } })
this.setState({ open: false })
}
}
ManageTeamDelete.propTypes = {
classes: PropTypes.object.isRequired,
slug: PropTypes.string.isRequired,
authId: PropTypes.string.isRequired
slug: PropTypes.string.isRequired
}
export default withStyles(styles)(ManageTeamDelete)
@@ -13,8 +13,6 @@ import DialogContentText from '@material-ui/core/DialogContentText'
import DialogTitle from '@material-ui/core/DialogTitle'
import Typography from '@material-ui/core/Typography'
import { getItem } from '../../../utils/local-storage'
import UPDATE_TEAM_PROFILE from '../../../graphql/teams/UpdateTeamProfileMutation'
import GET_TEAMS_BY_OWNER from '../../../graphql/teams/GetTeamsByOwnerQuery'
@@ -61,14 +59,13 @@ export class ManageTeamEdit extends Component {
render () {
console.log(this.props, this.props.slug)
const { classes, team, authId } = this.props
const { classes, team } = this.props
return (
<Mutation
mutation={UPDATE_TEAM_PROFILE}
refetchQueries={[
{
query: GET_TEAMS_BY_OWNER,
variables: { authId }
query: GET_TEAMS_BY_OWNER
}
]}
>
@@ -113,7 +110,6 @@ export class ManageTeamEdit extends Component {
<DialogContent>
<UploadImage
team={team}
authId={authId}
handleAvatar={this.handleAvatar}
handleBanner={this.handleBanner}
/>
@@ -207,13 +203,10 @@ export class ManageTeamEdit extends Component {
async handleSubmit (e, updateTeamProfile, slug) {
console.log('handleSubmit: ', this.state)
e.preventDefault()
const currentUser = await getItem('user')
let authId = JSON.parse(currentUser)
authId = authId.authId
await updateTeamProfile({
variables: {
slug,
owner: authId,
description: this.state.description,
motto: this.state.motto,
avatar: this.state.avatar,
@@ -227,7 +220,6 @@ export class ManageTeamEdit extends Component {
ManageTeamEdit.propTypes = {
classes: PropTypes.object.isRequired,
slug: PropTypes.string.isRequired,
authId: PropTypes.string,
team: PropTypes.object
}
@@ -68,7 +68,6 @@ export const ManageTeamMembersList = ({ classes, user = null }) => {
<Query
query={GET_TEAMS_BY_OWNER}
fetchPolicy='network-only'
variables={{ authId }}
>
{({ loading, error, data }) => {
console.log('GET_TEAMS_BY_OWNER: ', loading, error, data)
@@ -39,8 +39,8 @@ export const ManageTeamsItem = ({ classes, team, authId }) => {
</CardContent>
<CardActions>
<ManageTeamDetails team={team} />
<ManageTeamEdit slug={team.slug} authId={authId} team={team} />
<ManageTeamDelete slug={team.slug} authId={authId} />
<ManageTeamEdit slug={team.slug} team={team} />
<ManageTeamDelete slug={team.slug} />
</CardActions>
</div>
</Card>
@@ -69,7 +69,6 @@ export const ManageTeamsList = ({ classes, user = null }) => {
<Query
query={GET_TEAMS_BY_OWNER}
fetchPolicy='network-only'
variables={{ authId }}
>
{({ loading, error, data }) => {
console.log('GET_TEAMS_BY_OWNER: ', loading, error, data)