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))
}