Add company name and logo to documents
Signed-off-by: Sacha Al Himdani <sacha@getprobo.com>
This commit is contained in:
51
pkg/coredata/migrations/20251009T140000Z.sql
Normal file
51
pkg/coredata/migrations/20251009T140000Z.sql
Normal file
@@ -0,0 +1,51 @@
|
||||
ALTER TABLE organizations ALTER COLUMN logo_object_key SET DEFAULT '';
|
||||
|
||||
ALTER TABLE organizations
|
||||
ADD COLUMN horizontal_logo_file_id TEXT,
|
||||
ADD CONSTRAINT organizations_horizontal_logo_file_id_fkey
|
||||
FOREIGN KEY (horizontal_logo_file_id)
|
||||
REFERENCES files(id)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE RESTRICT;
|
||||
|
||||
ALTER TABLE organizations
|
||||
ADD COLUMN logo_file_id TEXT;
|
||||
|
||||
/* 25 is for FileEntityType */
|
||||
WITH
|
||||
logo_files AS (
|
||||
SELECT
|
||||
o.id as organization_id,
|
||||
generate_gid(decode_base64_unpadded(o.tenant_id), 25) as file_id,
|
||||
o.tenant_id,
|
||||
'probod' as bucket_name,
|
||||
'image/png' as mime_type,
|
||||
'logo.png' as file_name,
|
||||
o.logo_object_key,
|
||||
o.created_at,
|
||||
o.updated_at
|
||||
FROM organizations o
|
||||
WHERE o.logo_object_key IS NOT NULL AND o.logo_object_key != ''
|
||||
),
|
||||
inserted_files AS (
|
||||
INSERT INTO files (id, tenant_id, bucket_name, mime_type, file_name, file_key, file_size, created_at, updated_at)
|
||||
SELECT file_id, tenant_id, bucket_name, mime_type, file_name, logo_object_key::uuid, 0, created_at, updated_at
|
||||
FROM logo_files
|
||||
RETURNING id, tenant_id
|
||||
)
|
||||
|
||||
SELECT lf.organization_id, lf.file_id
|
||||
INTO TEMP TABLE file_logo_mapping
|
||||
FROM logo_files lf;
|
||||
|
||||
UPDATE organizations
|
||||
SET logo_file_id = fm.file_id
|
||||
FROM file_logo_mapping fm
|
||||
WHERE organizations.id = fm.organization_id;
|
||||
|
||||
ALTER TABLE organizations
|
||||
ADD CONSTRAINT organizations_logo_file_id_fkey
|
||||
FOREIGN KEY (logo_file_id)
|
||||
REFERENCES files(id)
|
||||
ON UPDATE CASCADE
|
||||
ON DELETE RESTRICT;
|
||||
@@ -28,17 +28,18 @@ import (
|
||||
|
||||
type (
|
||||
Organization struct {
|
||||
ID gid.GID `db:"id"`
|
||||
TenantID gid.TenantID `db:"tenant_id"`
|
||||
Name string `db:"name"`
|
||||
LogoObjectKey string `db:"logo_object_key"`
|
||||
Description *string `db:"description"`
|
||||
WebsiteURL *string `db:"website_url"`
|
||||
Email *string `db:"email"`
|
||||
HeadquarterAddress *string `db:"headquarter_address"`
|
||||
CustomDomainID *gid.GID `db:"custom_domain_id"`
|
||||
CreatedAt time.Time `db:"created_at"`
|
||||
UpdatedAt time.Time `db:"updated_at"`
|
||||
ID gid.GID `db:"id"`
|
||||
TenantID gid.TenantID `db:"tenant_id"`
|
||||
Name string `db:"name"`
|
||||
LogoFileID *gid.GID `db:"logo_file_id"`
|
||||
HorizontalLogoFileID *gid.GID `db:"horizontal_logo_file_id"`
|
||||
Description *string `db:"description"`
|
||||
WebsiteURL *string `db:"website_url"`
|
||||
Email *string `db:"email"`
|
||||
HeadquarterAddress *string `db:"headquarter_address"`
|
||||
CustomDomainID *gid.GID `db:"custom_domain_id"`
|
||||
CreatedAt time.Time `db:"created_at"`
|
||||
UpdatedAt time.Time `db:"updated_at"`
|
||||
}
|
||||
|
||||
Organizations []*Organization
|
||||
@@ -68,7 +69,8 @@ SELECT
|
||||
tenant_id,
|
||||
id,
|
||||
name,
|
||||
logo_object_key,
|
||||
logo_file_id,
|
||||
horizontal_logo_file_id,
|
||||
description,
|
||||
website_url,
|
||||
email,
|
||||
@@ -124,7 +126,8 @@ SELECT
|
||||
tenant_id,
|
||||
id,
|
||||
name,
|
||||
logo_object_key,
|
||||
logo_file_id,
|
||||
horizontal_logo_file_id,
|
||||
description,
|
||||
website_url,
|
||||
email,
|
||||
@@ -169,7 +172,8 @@ INSERT INTO organizations (
|
||||
tenant_id,
|
||||
id,
|
||||
name,
|
||||
logo_object_key,
|
||||
logo_file_id,
|
||||
horizontal_logo_file_id,
|
||||
description,
|
||||
website_url,
|
||||
email,
|
||||
@@ -177,21 +181,22 @@ INSERT INTO organizations (
|
||||
custom_domain_id,
|
||||
created_at,
|
||||
updated_at
|
||||
) VALUES (@tenant_id, @id, @name, @logo_object_key, @description, @website_url, @email, @headquarter_address, @custom_domain_id, @created_at, @updated_at)
|
||||
) VALUES (@tenant_id, @id, @name, @logo_file_id, @horizontal_logo_file_id, @description, @website_url, @email, @headquarter_address, @custom_domain_id, @created_at, @updated_at)
|
||||
`
|
||||
|
||||
args := pgx.StrictNamedArgs{
|
||||
"tenant_id": o.TenantID,
|
||||
"id": o.ID,
|
||||
"name": o.Name,
|
||||
"logo_object_key": o.LogoObjectKey,
|
||||
"description": o.Description,
|
||||
"website_url": o.WebsiteURL,
|
||||
"email": o.Email,
|
||||
"headquarter_address": o.HeadquarterAddress,
|
||||
"custom_domain_id": o.CustomDomainID,
|
||||
"created_at": o.CreatedAt,
|
||||
"updated_at": o.UpdatedAt,
|
||||
"tenant_id": o.TenantID,
|
||||
"id": o.ID,
|
||||
"name": o.Name,
|
||||
"logo_file_id": o.LogoFileID,
|
||||
"horizontal_logo_file_id": o.HorizontalLogoFileID,
|
||||
"description": o.Description,
|
||||
"website_url": o.WebsiteURL,
|
||||
"email": o.Email,
|
||||
"headquarter_address": o.HeadquarterAddress,
|
||||
"custom_domain_id": o.CustomDomainID,
|
||||
"created_at": o.CreatedAt,
|
||||
"updated_at": o.UpdatedAt,
|
||||
}
|
||||
|
||||
_, err := conn.Exec(ctx, q, args)
|
||||
@@ -211,7 +216,8 @@ func (o *Organization) Update(
|
||||
UPDATE organizations
|
||||
SET
|
||||
name = @name,
|
||||
logo_object_key = @logo_object_key,
|
||||
logo_file_id = @logo_file_id,
|
||||
horizontal_logo_file_id = @horizontal_logo_file_id,
|
||||
description = @description,
|
||||
website_url = @website_url,
|
||||
email = @email,
|
||||
@@ -226,15 +232,16 @@ WHERE
|
||||
q = fmt.Sprintf(q, scope.SQLFragment())
|
||||
|
||||
args := pgx.StrictNamedArgs{
|
||||
"id": o.ID,
|
||||
"name": o.Name,
|
||||
"logo_object_key": o.LogoObjectKey,
|
||||
"description": o.Description,
|
||||
"website_url": o.WebsiteURL,
|
||||
"email": o.Email,
|
||||
"headquarter_address": o.HeadquarterAddress,
|
||||
"custom_domain_id": o.CustomDomainID,
|
||||
"updated_at": o.UpdatedAt,
|
||||
"id": o.ID,
|
||||
"name": o.Name,
|
||||
"logo_file_id": o.LogoFileID,
|
||||
"horizontal_logo_file_id": o.HorizontalLogoFileID,
|
||||
"description": o.Description,
|
||||
"website_url": o.WebsiteURL,
|
||||
"email": o.Email,
|
||||
"headquarter_address": o.HeadquarterAddress,
|
||||
"custom_domain_id": o.CustomDomainID,
|
||||
"updated_at": o.UpdatedAt,
|
||||
}
|
||||
|
||||
maps.Copy(args, scope.SQLArguments())
|
||||
@@ -283,7 +290,8 @@ SELECT
|
||||
tenant_id,
|
||||
id,
|
||||
name,
|
||||
logo_object_key,
|
||||
logo_file_id,
|
||||
horizontal_logo_file_id,
|
||||
description,
|
||||
website_url,
|
||||
email,
|
||||
|
||||
Reference in New Issue
Block a user