mirror of
https://codeberg.org/shroff/phylum.git
synced 2026-01-23 20:49:14 -06:00
86 lines
1.7 KiB
Go
86 lines
1.7 KiB
Go
package db
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
|
|
"github.com/google/uuid"
|
|
"github.com/jackc/pgx/v5"
|
|
)
|
|
|
|
const DefaultUserUsername = "phylum"
|
|
const DefaultUserDisplayName = "Phylum"
|
|
|
|
func (d DbHandler) BootstrapData(ctx context.Context) error {
|
|
if _, err := d.UserByUsername(ctx, DefaultUserUsername); err != nil {
|
|
if errors.Is(err, pgx.ErrNoRows) {
|
|
err = d.populateData(ctx)
|
|
}
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func (d DbHandler) populateData(ctx context.Context) (e error) {
|
|
return d.WithTx(ctx, func(dbh *DbHandler) error {
|
|
var err error
|
|
|
|
// Create root folder
|
|
id, _ := uuid.NewUUID()
|
|
root, err := dbh.CreateResource(ctx, CreateResourceParams{
|
|
ID: id,
|
|
Name: "",
|
|
Dir: true,
|
|
})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// Create home folder
|
|
id, _ = uuid.NewUUID()
|
|
home, err := dbh.CreateResource(ctx, CreateResourceParams{
|
|
ID: id,
|
|
Parent: &root.ID,
|
|
Name: "home",
|
|
Dir: true,
|
|
})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// Create user home folder
|
|
id, _ = uuid.NewUUID()
|
|
userHome, err := dbh.CreateResource(ctx, CreateResourceParams{
|
|
ID: id,
|
|
Parent: &home.ID,
|
|
Name: DefaultUserUsername,
|
|
Dir: true,
|
|
})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// Create phylum user
|
|
u, err := dbh.CreateUser(ctx, CreateUserParams{
|
|
Username: DefaultUserUsername,
|
|
DisplayName: DefaultUserDisplayName,
|
|
PasswordHash: "CANNOT LOG IN",
|
|
Root: root.ID,
|
|
Home: userHome.ID,
|
|
})
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
_, err = dbh.UpdateUserPermissionsForResource(ctx, UpdateUserPermissionsForResourceParams{
|
|
ResourceID: root.ID,
|
|
Username: u.Username,
|
|
Permission: -1,
|
|
})
|
|
return err
|
|
})
|
|
}
|