Skip to content

Commit 463ecff

Browse files
feat: Add organization creation activity
1 parent 1d19d9c commit 463ecff

4 files changed

Lines changed: 61 additions & 16 deletions

File tree

internal/onboarding/activity/organization.go

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ func (ta *TenantActivities) GetOrganizationIDByAuthID(ctx context.Context, authI
2020
db, err := onboarding.GetCachedTenantDB(ta.DBConnections, DBURL, ctx)
2121

2222
if err != nil {
23-
return 0, err
23+
return 0, errors.New("failed to get cached tenant DB: " + err.Error())
2424
}
2525

2626
var organizationId int64
@@ -38,3 +38,30 @@ func (ta *TenantActivities) GetOrganizationIDByAuthID(ctx context.Context, authI
3838

3939
return organizationId, nil
4040
}
41+
42+
func (ta *TenantActivities) CreateOrganization(
43+
ctx context.Context,
44+
organizationName string,
45+
authID string,
46+
DBURL string,
47+
) (bool, error) {
48+
49+
db, err := onboarding.GetCachedTenantDB(ta.DBConnections, DBURL, ctx)
50+
51+
if err != nil {
52+
return false, errors.New("failed to get cached tenant DB: " + err.Error())
53+
}
54+
55+
_, err = db.QueryContext(ctx, `
56+
INSERT INTO organizations
57+
(name, auth_id)
58+
VALUES
59+
(?, ?);`,
60+
organizationName, authID)
61+
62+
if err != nil {
63+
return false, errors.New("failed to create organization: " + err.Error())
64+
}
65+
66+
return true, nil
67+
}

internal/onboarding/activity/settings.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,17 @@ package activity
33
import (
44
"context"
55
"errors"
6-
"fmt"
76

87
"github.com/dxta-dev/app/internal/onboarding"
98
)
109

1110
func (ta *TenantActivities) UpsertTenantDBInfo(
1211
ctx context.Context,
1312
DBName string,
14-
DBHostName string,
13+
DBURL string,
1514
DBDomainName string,
1615
) (bool, error) {
17-
dbUrl := fmt.Sprintf("libsql://%s", DBHostName)
18-
db, err := onboarding.GetCachedTenantDB(ta.DBConnections, dbUrl, ctx)
16+
db, err := onboarding.GetCachedTenantDB(ta.DBConnections, DBURL, ctx)
1917

2018
if err != nil {
2119
return false, err

internal/onboarding/activity/tenant_db.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ type DatabaseData struct {
1616
DBID string `json:"DbId"`
1717
Hostname string `json:"Hostname"`
1818
Name string `json:"Name"`
19+
DBURL string
1920
}
2021
type CreateTenantDBRes struct {
2122
Database DatabaseData `json:"database"`
@@ -99,14 +100,16 @@ func (cta CreateTenantActivities) CreateTenantDB(
99100

100101
fmt.Printf("Success! Data: %v", body)
101102

103+
body.Database.DBURL = fmt.Sprintf("libsql://%s", body.Database.Hostname)
104+
102105
return &body, nil
103106
}
104107

105108
func (cta CreateTenantActivities) AddTenantDBToMap(
106109
ctx context.Context,
107110
authId string,
108111
DBName string,
109-
DBHostName string,
112+
DBURL string,
110113
DBDomainName string,
111114
) (bool, error) {
112115
db, err := onboarding.GetDB(ctx, cta.config.OrganizationsTenantMapDBURL)
@@ -115,12 +118,10 @@ func (cta CreateTenantActivities) AddTenantDBToMap(
115118
return false, errors.New("failed to get organizations-tenant-map db: " + err.Error())
116119
}
117120

118-
dbUrl := fmt.Sprintf("libsql://%s", DBHostName)
119-
120121
_, err = db.QueryContext(ctx, `
121122
INSERT INTO tenants
122123
(organization_id, db_url, name, domain)
123-
VALUES (?, ?, ?, ?);`, authId, dbUrl, DBName, DBDomainName)
124+
VALUES (?, ?, ?, ?);`, authId, DBURL, DBName, DBDomainName)
124125

125126
if err != nil {
126127
return false, errors.New("failed to store tenant db data to organizations-tenant-map db: " + err.Error())

internal/onboarding/workflow/create_tenant_db.go

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,16 @@ import (
1414
)
1515

1616
type CreateTenantDBParams struct {
17-
DBName string
18-
AuthID string
17+
DBName string
18+
AuthID string
19+
OrganizationName string
1920
}
2021

2122
func CreateTenantDBWorkflow(
2223
ctx workflow.Context,
2324
params CreateTenantDBParams,
2425
) (err error) {
25-
if params.DBName == "" || params.AuthID == "" {
26+
if params.DBName == "" || params.AuthID == "" || params.OrganizationName == "" {
2627
err = errors.New("bad request")
2728
return
2829
}
@@ -56,18 +57,26 @@ func CreateTenantDBWorkflow(
5657
(*activity.CreateTenantActivities).AddTenantDBToMap,
5758
params.AuthID,
5859
params.DBName,
59-
newDBData.Database.Hostname,
60+
newDBData.Database.DBURL,
6061
newDBData.Database.Name,
6162
)
6263

6364
upsertTenantInfoFuture := workflow.ExecuteActivity(
6465
ctx,
6566
(*activity.TenantActivities).UpsertTenantDBInfo,
6667
params.DBName,
67-
newDBData.Database.Hostname,
68+
newDBData.Database.DBURL,
6869
newDBData.Database.Name,
6970
)
7071

72+
createOrganizationFuture := workflow.ExecuteActivity(
73+
ctx,
74+
(*activity.TenantActivities).CreateOrganization,
75+
params.OrganizationName,
76+
params.AuthID,
77+
newDBData.Database.DBURL,
78+
)
79+
7180
var tenantDBMapRes bool
7281

7382
err = mapTenantFuture.Get(ctx, &tenantDBMapRes)
@@ -84,13 +93,22 @@ func CreateTenantDBWorkflow(
8493
return
8594
}
8695

96+
var createOrganizationRes bool
97+
98+
err = createOrganizationFuture.Get(ctx, &createOrganizationRes)
99+
100+
if err != nil {
101+
return
102+
}
103+
87104
return
88105
}
89106

90107
type ExecuteCreateTenantDBWorkflowParams struct {
91108
TemporalOnboardingQueueName string
92109
AuthID string
93110
DBName string
111+
OrganizationName string
94112
}
95113

96114
func ExecuteCreateTenantDBWorkflow(
@@ -110,8 +128,9 @@ func ExecuteCreateTenantDBWorkflow(
110128
},
111129
CreateTenantDBWorkflow,
112130
CreateTenantDBParams{
113-
AuthID: params.AuthID,
114-
DBName: params.DBName,
131+
AuthID: params.AuthID,
132+
DBName: params.DBName,
133+
OrganizationName: params.OrganizationName,
115134
},
116135
)
117136

0 commit comments

Comments
 (0)