Skip to content

Commit

Permalink
fix apollo state in client; query front page modules separately etc.
Browse files Browse the repository at this point in the history
  • Loading branch information
mipyykko committed Jul 18, 2023
1 parent 924139b commit 1c155af
Show file tree
Hide file tree
Showing 28 changed files with 1,582 additions and 370 deletions.
135 changes: 68 additions & 67 deletions backend/prisma/schema.prisma
Original file line number Diff line number Diff line change
Expand Up @@ -99,8 +99,8 @@ model Course {
start_point Boolean?
hidden Boolean?
study_module_start_point Boolean?
order Int?
study_module_order Int?
order Int? @default(0)
study_module_order Int? @default(0)
automatic_completions Boolean? @default(false)
automatic_completions_eligible_for_ects Boolean? @default(true)
points_needed Int?
Expand Down Expand Up @@ -209,21 +209,21 @@ model CourseVariant {
}

model EmailDelivery {
id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid
sent Boolean @default(false)
error Boolean @default(false)
id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid
sent Boolean @default(false)
error Boolean @default(false)
/// use either this email to send to or if not specified, the one in the user profile
email String?
error_message String?
user_id String? @db.Uuid
email_template_id String? @db.Uuid
organization_id String? @db.Uuid
created_at DateTime @default(now())
updated_at DateTime @default(now()) @updatedAt
email_template EmailTemplate? @relation(fields: [email_template_id], references: [id], onUpdate: NoAction)
user User? @relation(fields: [user_id], references: [id], onUpdate: NoAction)
user_organization_join_confirmation UserOrganizationJoinConfirmation?
organization Organization? @relation(fields: [organization_id], references: [id])
email String?
error_message String?
user_id String? @db.Uuid
email_template_id String? @db.Uuid
organization_id String? @db.Uuid
created_at DateTime @default(now())
updated_at DateTime @default(now()) @updatedAt
email_template EmailTemplate? @relation(fields: [email_template_id], references: [id], onUpdate: NoAction)
user User? @relation(fields: [user_id], references: [id], onUpdate: NoAction)
user_organization_join_confirmation UserOrganizationJoinConfirmation?
organization Organization? @relation(fields: [organization_id], references: [id])
@@index([email_template_id])
@@index([user_id, email_template_id])
Expand Down Expand Up @@ -341,42 +341,42 @@ model OpenUniversityRegistrationLink {
}

model Organization {
id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid
slug String @unique
secret_key String @unique
name String
information String?
verified_at DateTime?
verified Boolean?
disabled Boolean?
disabled_reason String?
hidden Boolean?
tmc_created_at DateTime?
tmc_updated_at DateTime?
logo_file_name String?
logo_content_type String?
logo_file_size Int?
logo_updated_at DateTime?
phone String?
contact_information String?
email String?
website String?
pinned Boolean?
required_confirmation Boolean? @default(true)
required_organization_email String?
creator_id String? @db.Uuid
created_at DateTime @default(now())
updated_at DateTime @default(now()) @updatedAt
join_organization_email_template_id String? @db.Uuid
completions_registered CompletionRegistered[]
courses Course[]
course_organizations CourseOrganization[]
creator User? @relation(fields: [creator_id], references: [id], onUpdate: NoAction)
join_organization_email_template EmailTemplate? @relation(fields: [join_organization_email_template_id], references: [id], onUpdate: NoAction)
organization_translations OrganizationTranslation[]
user_organizations UserOrganization[]
verified_users VerifiedUser[]
email_deliveries EmailDelivery[]
id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid
slug String @unique
secret_key String @unique
name String
information String?
verified_at DateTime?
verified Boolean?
disabled Boolean?
disabled_reason String?
hidden Boolean?
tmc_created_at DateTime?
tmc_updated_at DateTime?
logo_file_name String?
logo_content_type String?
logo_file_size Int?
logo_updated_at DateTime?
phone String?
contact_information String?
email String?
website String?
pinned Boolean?
required_confirmation Boolean? @default(true)
required_organization_email String?
creator_id String? @db.Uuid
created_at DateTime @default(now())
updated_at DateTime @default(now()) @updatedAt
join_organization_email_template_id String? @db.Uuid
completions_registered CompletionRegistered[]
courses Course[]
course_organizations CourseOrganization[]
creator User? @relation(fields: [creator_id], references: [id], onUpdate: NoAction)
join_organization_email_template EmailTemplate? @relation(fields: [join_organization_email_template_id], references: [id], onUpdate: NoAction)
organization_translations OrganizationTranslation[]
user_organizations UserOrganization[]
verified_users VerifiedUser[]
email_deliveries EmailDelivery[]
@@index([creator_id])
@@map("organization")
Expand Down Expand Up @@ -429,7 +429,7 @@ model StudyModule {
slug String @unique
name String
image String?
order Int?
order Int? @default(0)
created_at DateTime @default(now())
updated_at DateTime @default(now()) @updatedAt
study_module_translations StudyModuleTranslation[]
Expand Down Expand Up @@ -570,20 +570,21 @@ model UserCourseSettingsVisibility {
}

model UserOrganization {
id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid
organizational_email String?
organizational_identifier String?
confirmed Boolean? @default(false)
confirmed_at DateTime?
role OrganizationRole? @default(Student)
user_id String? @db.Uuid
organization_id String? @db.Uuid
consented Boolean? @default(false)
created_at DateTime @default(now())
updated_at DateTime @default(now()) @updatedAt
organization Organization? @relation(fields: [organization_id], references: [id], onUpdate: NoAction)
user User? @relation(fields: [user_id], references: [id], onUpdate: NoAction)
user_organization_join_confirmations UserOrganizationJoinConfirmation[]
id String @id @default(dbgenerated("extensions.uuid_generate_v4()")) @db.Uuid
organizational_email String?
organizational_identifier String?
confirmed Boolean? @default(false)
confirmed_at DateTime?
role OrganizationRole? @default(Student)
user_id String? @db.Uuid
organization_id String? @db.Uuid
consented Boolean? @default(false)
created_at DateTime @default(now())
updated_at DateTime @default(now()) @updatedAt
organization Organization? @relation(fields: [organization_id], references: [id], onUpdate: NoAction)
user User? @relation(fields: [user_id], references: [id], onUpdate: NoAction)
user_organization_join_confirmations UserOrganizationJoinConfirmation[]
@@map("user_organization")
}

Expand Down
12 changes: 10 additions & 2 deletions backend/schema/Course/model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,11 @@ export const Course = objectType({
t.model.inherit_settings_from_id()
t.model.inherit_settings_from()
t.model.name()
t.model.order()
t.model.order({
resolve: async (root, args, ctx, info, originalResolve) => {
return (await originalResolve(root, args, ctx, info)) ?? 0
},
})
t.model.owner_organization_id()
t.model.owner_organization()
t.model.photo_id()
Expand All @@ -37,7 +41,11 @@ export const Course = objectType({
t.model.start_date()
t.model.start_point()
t.model.status()
t.model.study_module_order()
t.model.study_module_order({
resolve: async (root, args, ctx, info, originalResolve) => {
return (await originalResolve(root, args, ctx, info)) ?? 0
},
})
t.model.study_module_start_point()
t.model.support_email()
t.model.teacher_in_charge_email()
Expand Down
10 changes: 7 additions & 3 deletions backend/schema/Course/queries.ts
Original file line number Diff line number Diff line change
Expand Up @@ -98,9 +98,13 @@ export const CourseQueries = extendType({
t.list.nonNull.field("courses", {
type: "Course",
args: {
orderBy: arg({
type: "CourseOrderByWithRelationAndSearchRelevanceInput",
}),
orderBy: list(
nonNull(
arg({
type: "CourseOrderByWithRelationAndSearchRelevanceInput",
}),
),
),
language: stringArg(),
search: stringArg(),
hidden: booleanArg({ default: true }),
Expand Down
15 changes: 10 additions & 5 deletions backend/schema/Exercise.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import {
extendType,
idArg,
intArg,
list,
nonNull,
objectType,
stringArg,
Expand All @@ -13,7 +14,7 @@ import { Prisma } from "@prisma/client"

import { isAdmin, Role } from "../accessControl"
import { GraphQLAuthenticationError } from "../lib/errors"
import { filterNullFields, isDefined } from "../util"
import { filterNullRecursive, isDefined } from "../util"
import { Context } from "/context"

export const Exercise = objectType({
Expand All @@ -37,9 +38,13 @@ export const Exercise = objectType({
t.list.nonNull.field("exercise_completions", {
type: "ExerciseCompletion",
args: {
orderBy: arg({
type: "ExerciseCompletionOrderByWithRelationAndSearchRelevanceInput",
}),
orderBy: list(
nonNull(
arg({
type: "ExerciseCompletionOrderByWithRelationAndSearchRelevanceInput",
}),
),
),
user_id: idArg(),
completed: booleanArg(),
attempted: booleanArg(),
Expand All @@ -65,7 +70,7 @@ export const Exercise = objectType({
orderBy: [
{ timestamp: "desc" },
{ updated_at: "desc" },
filterNullFields(orderBy),
...(filterNullRecursive(orderBy) ?? []),
].filter(
isDefined,
) as Prisma.Enumerable<Prisma.ExerciseCompletionOrderByWithRelationAndSearchRelevanceInput>,
Expand Down
11 changes: 8 additions & 3 deletions backend/schema/Organization.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import {
extendType,
idArg,
intArg,
list,
nonNull,
objectType,
stringArg,
Expand Down Expand Up @@ -130,9 +131,13 @@ export const OrganizationQueries = extendType({
take: intArg(),
skip: intArg(),
cursor: arg({ type: "OrganizationWhereUniqueInput" }),
orderBy: arg({
type: "OrganizationOrderByWithRelationAndSearchRelevanceInput",
}),
orderBy: list(
nonNull(
arg({
type: "OrganizationOrderByWithRelationAndSearchRelevanceInput",
}),
),
),
hidden: booleanArg(),
disabled: booleanArg(),
},
Expand Down
46 changes: 39 additions & 7 deletions backend/schema/StudyModule/model.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import { omit } from "lodash"
import { arg, objectType, stringArg } from "nexus"
import { arg, booleanArg, list, nonNull, objectType, stringArg } from "nexus"

import { Course, CourseTranslation } from "@prisma/client"

Expand All @@ -22,14 +22,18 @@ export const StudyModule = objectType({
t.list.nonNull.field("courses", {
type: "Course",
args: {
orderBy: arg({
type: "CourseOrderByWithRelationAndSearchRelevanceInput",
}),
orderBy: list(
nonNull(
arg({
type: "CourseOrderByWithRelationAndSearchRelevanceInput",
}),
),
),
language: stringArg(),
hidden: booleanArg(),
statuses: list(nonNull(arg({ type: "CourseStatus" }))),
},
resolve: async (parent, args, ctx) => {
const { language, orderBy } = args

resolve: async (parent, { language, orderBy, hidden, statuses }, ctx) => {
const courses: (Course & {
course_translations?: CourseTranslation[]
})[] =
Expand All @@ -39,6 +43,34 @@ export const StudyModule = objectType({
})
.courses({
orderBy: filterNullRecursive(orderBy),
where: {
...(language
? {
course_translations: {
some: {
language,
},
},
}
: {}),
...(!hidden
? {
OR: [
{
hidden: false,
},
{
hidden: null,
},
],
}
: {}),
...(statuses && statuses.length > 0
? {
status: { in: statuses },
}
: {}),
},
...(language
? {
include: {
Expand Down
27 changes: 23 additions & 4 deletions backend/schema/StudyModule/queries.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
import { omit } from "lodash"
import { arg, booleanArg, extendType, idArg, nonNull, stringArg } from "nexus"
import {
arg,
booleanArg,
extendType,
idArg,
list,
nonNull,
stringArg,
} from "nexus"

import { StudyModule, StudyModuleTranslation } from "@prisma/client"

Expand Down Expand Up @@ -90,9 +98,13 @@ export const StudyModuleQueries = extendType({
t.list.nonNull.field("study_modules", {
type: "StudyModule",
args: {
orderBy: arg({
type: "StudyModuleOrderByWithRelationAndSearchRelevanceInput",
}),
orderBy: list(
nonNull(
arg({
type: "StudyModuleOrderByWithRelationAndSearchRelevanceInput",
}),
),
),
language: stringArg(),
},
resolve: async (_, { orderBy, language }, ctx) => {
Expand All @@ -102,6 +114,13 @@ export const StudyModuleQueries = extendType({
orderBy: filterNullRecursive(orderBy) ?? undefined,
...(language
? {
where: {
study_module_translations: {
some: {
language,
},
},
},
include: {
study_module_translations: {
where: {
Expand Down
Loading

0 comments on commit 1c155af

Please sign in to comment.