From 523fcee03b43696d55824d4894f611f013d6feb3 Mon Sep 17 00:00:00 2001 From: William Petit Date: Thu, 31 Aug 2023 06:45:04 -0600 Subject: [PATCH] wip: workgroup description --- .../src/components/WorkgroupPage/InfoForm.tsx | 10 ++++++++ client/src/gql/mutations/workgroups.tsx | 5 ++++ client/src/gql/queries/workgroups.tsx | 1 + client/src/types/workgroup.ts | 1 + cmd/server/migration.go | 25 +++++++++++++++++-- internal/model/workgroup.go | 7 +++--- internal/route/login.go | 10 +++++--- 7 files changed, 51 insertions(+), 8 deletions(-) diff --git a/client/src/components/WorkgroupPage/InfoForm.tsx b/client/src/components/WorkgroupPage/InfoForm.tsx index 224106b..4c124ab 100644 --- a/client/src/components/WorkgroupPage/InfoForm.tsx +++ b/client/src/components/WorkgroupPage/InfoForm.tsx @@ -14,6 +14,7 @@ export function InfoForm({ workgroup, onChange }: InfoFormProps) { workgroup: { id: workgroup && workgroup.id ? workgroup.id : '', name: workgroup && workgroup.name ? workgroup.name : '', + description: workgroup && workgroup.description ? workgroup.description : '', createdAt: workgroup && workgroup.createdAt ? workgroup.createdAt : null, closedAt: workgroup && workgroup.closedAt ? workgroup.closedAt : null, } @@ -34,6 +35,7 @@ export function InfoForm({ workgroup, onChange }: InfoFormProps) { workgroup: { id: workgroup && workgroup.id ? workgroup.id : '', name: workgroup && workgroup.name ? workgroup.name : '', + description: workgroup && workgroup.description ? workgroup.description : '', createdAt: workgroup && workgroup.createdAt ? workgroup.createdAt : null, closedAt: workgroup && workgroup.closedAt ? workgroup.closedAt : null, } @@ -76,6 +78,14 @@ export function InfoForm({ workgroup, onChange }: InfoFormProps) { onChange={onWorkgroupAttrChange.bind(null, "name")} /> +
+ +
+ +
+
{ state.workgroup.createdAt ?
diff --git a/client/src/gql/mutations/workgroups.tsx b/client/src/gql/mutations/workgroups.tsx index b950a14..0340e95 100644 --- a/client/src/gql/mutations/workgroups.tsx +++ b/client/src/gql/mutations/workgroups.tsx @@ -7,6 +7,7 @@ mutation updateWorkgroup($workgroupId: ID!, $changes: WorkgroupChanges!) { updateWorkgroup(workgroupId: $workgroupId, changes: $changes) { id, name, + description, createdAt, closedAt, members { @@ -26,6 +27,7 @@ mutation createWorkgroup($changes: WorkgroupChanges!) { createWorkgroup(changes: $changes) { id, name, + description, createdAt, closedAt, members { @@ -47,6 +49,7 @@ mutation joinWorkgroup($workgroupId: ID!) { joinWorkgroup(workgroupId: $workgroupId) { id, name, + description, createdAt, closedAt, members { @@ -78,6 +81,7 @@ mutation leaveWorkgroup($workgroupId: ID!) { leaveWorkgroup(workgroupId: $workgroupId) { id, name, + description, createdAt, closedAt, members { @@ -117,6 +121,7 @@ mutation closeWorkgroup($workgroupId: ID!) { closeWorkgroup(workgroupId: $workgroupId) { id, name, + description, createdAt, closedAt, members { diff --git a/client/src/gql/queries/workgroups.tsx b/client/src/gql/queries/workgroups.tsx index ce4b9ba..6b22d38 100644 --- a/client/src/gql/queries/workgroups.tsx +++ b/client/src/gql/queries/workgroups.tsx @@ -7,6 +7,7 @@ export const QUERY_WORKGROUP = gql` workgroups(filter: $filter) { id, name, + description, createdAt, closedAt, members { diff --git a/client/src/types/workgroup.ts b/client/src/types/workgroup.ts index 9546278..9b0079d 100644 --- a/client/src/types/workgroup.ts +++ b/client/src/types/workgroup.ts @@ -2,6 +2,7 @@ import { User } from "./user"; export interface Workgroup { id: string name: string + description: string createdAt: Date closedAt: Date members: User[] diff --git a/cmd/server/migration.go b/cmd/server/migration.go index c58ed5e..ea91650 100644 --- a/cmd/server/migration.go +++ b/cmd/server/migration.go @@ -27,7 +27,8 @@ func applyMigration(ctx context.Context, ctn *service.Container) error { // Register available migrations migr.Register( - m000initialSchema(), + m000InitialSchema(), + m001WorkgroupDescription(), ) currentVersion, err := migr.CurrentVersion(ctx) @@ -84,7 +85,7 @@ var initialModels = []interface{}{ &model.Event{}, } -func m000initialSchema() orm.Migration { +func m000InitialSchema() orm.Migration { return orm.NewDBMigration( "00_initial_schema", func(ctx context.Context, tx *gorm.DB) error { @@ -107,3 +108,23 @@ func m000initialSchema() orm.Migration { }, ) } + +func m001WorkgroupDescription() orm.Migration { + return orm.NewDBMigration( + "01_workgroup_description", + func(ctx context.Context, tx *gorm.DB) error { + if err := tx.AutoMigrate(&model.Workgroup{}).Error; err != nil { + return errors.WithStack(err) + } + + return nil + }, + func(ctx context.Context, tx *gorm.DB) error { + if err := tx.Model(&model.Workgroup{}).DropColumn("description").Error; err != nil { + return errors.WithStack(err) + } + + return nil + }, + ) +} diff --git a/internal/model/workgroup.go b/internal/model/workgroup.go index 7f71eae..f2b4bc2 100644 --- a/internal/model/workgroup.go +++ b/internal/model/workgroup.go @@ -10,9 +10,10 @@ const ObjectTypeWorkgroup = "workgroup" type Workgroup struct { gorm.Model - Name *string `json:"name"` - ClosedAt time.Time `json:"closedAt"` - Members []*User `gorm:"many2many:users_workgroups;association_autoupdate:false"` + Name *string `json:"name"` + Workgroup *string `json:"workgroup"` + ClosedAt time.Time `json:"closedAt"` + Members []*User `gorm:"many2many:users_workgroups;association_autoupdate:false"` } func (w *Workgroup) ObjectID() uint { diff --git a/internal/route/login.go b/internal/route/login.go index 158d016..8f41a2c 100644 --- a/internal/route/login.go +++ b/internal/route/login.go @@ -68,9 +68,8 @@ func handleLoginCallback(w http.ResponseWriter, r *http.Request) { db := orm.Must(ctn).DB() repo := model.NewUserRepository(db) - user, err := repo.CreateOrConnectUser(ctx, claims.Email) - if err != nil { - panic(errors.Wrap(err, "could not upsert user")) + user := &model.User{ + Email: claims.Email, } authorized, err := auth.Authorize(user) @@ -85,6 +84,11 @@ func handleLoginCallback(w http.ResponseWriter, r *http.Request) { return } + user, err = repo.CreateOrConnectUser(ctx, claims.Email) + if err != nil { + panic(errors.Wrap(err, "could not upsert user")) + } + if err := session.SaveUserEmail(w, r, claims.Email); err != nil { panic(errors.WithStack(err)) }