63 lines
2.4 KiB
Go
63 lines
2.4 KiB
Go
package schema
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/uptrace/bun"
|
|
)
|
|
|
|
type Profile struct {
|
|
bun.BaseModel `bun:"table:profile"`
|
|
|
|
ID string `bun:"id,pk"`
|
|
CreatedAt time.Time `bun:"created_date,nullzero,notnull,default:current_timestamp"`
|
|
UpdatedAt time.Time `bun:"last_modified_date,nullzero,notnull,default:current_timestamp"`
|
|
Version int `bun:"version,default:0"`
|
|
FirstName string `bun:"first_name"`
|
|
LastName string `bun:"last_name"`
|
|
UserName string `bun:"user_name,unique:user_name"`
|
|
Email string `bun:"email"`
|
|
Password string `bun:"password"`
|
|
Enabled bool `bun:"enabled"`
|
|
Assignments []Assignment `bun:"rel:has-many,join:id=profile_id"`
|
|
Tokens []Token `bun:"rel:has-many,join:id=profile_id"`
|
|
}
|
|
|
|
type Permission struct {
|
|
bun.BaseModel `bun:"table:permission"`
|
|
|
|
ID string `bun:"id,pk"`
|
|
CreatedAt time.Time `bun:"created_date,nullzero,notnull,default:current_timestamp"`
|
|
UpdatedAt time.Time `bun:"last_modified_date,nullzero,notnull,default:current_timestamp"`
|
|
Version int `bun:"version,default:0"`
|
|
Name string `bun:"name,unique:name"`
|
|
Assignments []Assignment `bun:"rel:has-many,join:id=permission_id"`
|
|
}
|
|
|
|
type Token struct {
|
|
bun.BaseModel `bun:"table:token"`
|
|
|
|
ID string `bun:"id,pk"`
|
|
CreatedAt time.Time `bun:"created_date,nullzero,notnull,default:current_timestamp"`
|
|
UpdatedAt time.Time `bun:"last_modified_date,nullzero,notnull,default:current_timestamp"`
|
|
Version int `bun:"version,default:0"`
|
|
Name string `bun:"name,unique:name"`
|
|
LastUsedAt time.Time `bun:"last_used_date,nullzero,notnull,default:current_timestamp"`
|
|
Enabled bool `bun:"enabled,default:true"`
|
|
ProfileID *string `bun:"profile_id"`
|
|
Profile *Profile `bun:"rel:belongs-to,join:profile_id=id"`
|
|
}
|
|
|
|
type Assignment struct {
|
|
bun.BaseModel `bun:"table:assignment"`
|
|
|
|
ID string `bun:"id,pk"`
|
|
CreatedAt time.Time `bun:"created_date,nullzero,notnull,default:current_timestamp"`
|
|
UpdatedAt time.Time `bun:"last_modified_date,nullzero,notnull,default:current_timestamp"`
|
|
Version int `bun:"version,default:0"`
|
|
ProfileID *string `bun:"profile_id"`
|
|
Profile *Profile `bun:"rel:belongs-to,join:profile_id=id"`
|
|
PermissionID *string `bun:"permission_id"`
|
|
Permission *Permission `bun:"rel:belongs-to,join:permission_id=id"`
|
|
}
|