Skip to content

Commit

Permalink
feat: apply new db models
Browse files Browse the repository at this point in the history
  • Loading branch information
moul committed Jun 29, 2020
1 parent 8f06439 commit 2c85c6b
Show file tree
Hide file tree
Showing 8 changed files with 338 additions and 192 deletions.
1 change: 1 addition & 0 deletions AUTHORS

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

44 changes: 37 additions & 7 deletions api/sgtm.proto
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,10 @@ message Status {

message Register {
message Request {
string email = 10 [(go.field.options) = {tags: 'gorm:"size:255;not null;index:,unique"'}];
string username = 11 [(go.field.options) = {tags: 'gorm:"size:32;not null;default:\'\'"'}];
string firstname = 12 [(go.field.options) = {tags: 'gorm:"size:255;not null;default:\'\'"'}];
string lastname = 13 [(go.field.options) = {tags: 'gorm:"size:255;not null;default:\'\'"'}];
string email = 10;
string slug = 11;
string firstname = 12;
string lastname = 13;
}
message Response {
User user = 1;
Expand All @@ -56,16 +56,33 @@ message PostList {

/// Models

/*
╔══════════════╗ ╔══════════════╗
║ Post ║ ║ User ║
║ ║ ║ ║
║ Author ║ ║ Email ║
║ Title ║ ║ Slug ║
║ Slug ║────║ Name ║
║ ReplyTo ║ ║ ║
║ ForkOf ║ ║ ║
║ Kind ║ ║ ║
╚══════════════╝ ╚══════════════╝
*/

message User {
int64 id = 1 [(go.field.options) = {name: 'ID', tags: 'gorm:"primary_key"'}];
int64 created_at = 2 [(go.field.options) = {tags: 'gorm:"autocreatetime:nano"'}];
int64 updated_at = 3 [(go.field.options) = {tags: 'gorm:"autoupdatetime:nano"'}];
int64 deleted_at = 4;

string email = 10 [(go.field.options) = {tags: 'gorm:"size:255;not null;index:,unique"'}];
string username = 11 [(go.field.options) = {tags: 'gorm:"size:32;not null;default:\'\'"'}];
string slug = 11 [(go.field.options) = {tags: 'gorm:"size:32;not null;default:\'\'"'}];
string firstname = 12 [(go.field.options) = {tags: 'gorm:"size:255;not null;default:\'\'"'}];
string lastname = 13 [(go.field.options) = {tags: 'gorm:"size:255;not null;default:\'\'"'}];
// bio
// timezone
// location
// avatar
}

message Post {
Expand All @@ -74,6 +91,19 @@ message Post {
int64 updated_at = 3 [(go.field.options) = {tags: 'gorm:"autoupdatetime:nano"'}];
int64 deleted_at = 4;

User user = 10;
int64 user_id = 11 [(go.field.options) = {name: 'UserID'}];
User author = 10;
int64 author_id = 11 [(go.field.options) = {name: 'AuthorID'}];
string title = 12;
string slug = 13;
int64 thread_post_id = 14 [(go.field.options) = {name: 'ThreadPostID'}];
Post thread_post = 15;
int64 reply_to_id = 16 [(go.field.options) = {name: 'ReplyToID'}];
Post reply_to = 17;
Kind kind = 18;

enum Kind {
Unknown = 0;
Post = 1;
Comment = 2;
}
}
2 changes: 1 addition & 1 deletion gen.sum

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 2 additions & 6 deletions go.sum

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 3 additions & 3 deletions pkg/sgtm/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,16 @@ import (

func (svc *Service) Register(ctx context.Context, input *sgtmpb.Register_Request) (*sgtmpb.Register_Response, error) {
fmt.Println(godev.PrettyJSON(input))
if input == nil || input.Email == "" || input.Username == "" {
if input == nil || input.Email == "" || input.Slug == "" {
return nil, fmt.Errorf("missing required fields")
}

// FIXME: generate username if empty
// FIXME: generate slug if empty
// FIXME: captcha
// FIXME: validate valid email
// FIXME: activity -> register (in a transaction)
user := sgtmpb.User{
Username: input.Username,
Slug: input.Slug,
Email: input.Email,
Firstname: input.Firstname,
Lastname: input.Lastname,
Expand Down
10 changes: 5 additions & 5 deletions pkg/sgtm/api_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,17 +24,17 @@ func TestServiceRegister(t *testing.T) {
}{
{"nil", nil, nil, true},
{"empty", &sgtmpb.Register_Request{}, nil, true},
{"no-email", &sgtmpb.Register_Request{Username: "moul", Firstname: "Manfred", Lastname: "Touron"}, nil, true},
{"no-username", &sgtmpb.Register_Request{Email: "m@42.am", Firstname: "Manfred", Lastname: "Touron"}, nil, true},
{"no-email", &sgtmpb.Register_Request{Slug: "moul", Firstname: "Manfred", Lastname: "Touron"}, nil, true},
{"no-slug", &sgtmpb.Register_Request{Email: "m@42.am", Firstname: "Manfred", Lastname: "Touron"}, nil, true},
{
"manfred",
&sgtmpb.Register_Request{Username: "moul", Firstname: "Manfred", Lastname: "Touron", Email: "m@42.am"},
&sgtmpb.Register_Response{User: &sgtmpb.User{Username: "moul", Firstname: "Manfred", Lastname: "Touron", Email: "m@42.am"}},
&sgtmpb.Register_Request{Slug: "moul", Firstname: "Manfred", Lastname: "Touron", Email: "m@42.am"},
&sgtmpb.Register_Response{User: &sgtmpb.User{Slug: "moul", Firstname: "Manfred", Lastname: "Touron", Email: "m@42.am"}},
false,
},
{
"manfred.bis",
&sgtmpb.Register_Request{Username: "moul", Firstname: "Manfred", Lastname: "Touron", Email: "m@42.am"},
&sgtmpb.Register_Request{Slug: "moul", Firstname: "Manfred", Lastname: "Touron", Email: "m@42.am"},
nil,
true,
},
Expand Down
12 changes: 6 additions & 6 deletions pkg/sgtm/db_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,25 +25,25 @@ func TestDBUserCreate(t *testing.T) {
},*/
{
"manfred",
&sgtmpb.User{Firstname: "Manfred", Lastname: "Touron", Email: "m@42.am", Username: "moul"},
&sgtmpb.User{Firstname: "Manfred", Lastname: "Touron", Email: "m@42.am", Username: "moul"},
&sgtmpb.User{Firstname: "Manfred", Lastname: "Touron", Email: "m@42.am", Slug: "moul"},
&sgtmpb.User{Firstname: "Manfred", Lastname: "Touron", Email: "m@42.am", Slug: "moul"},
false,
},
{
"manfred2",
&sgtmpb.User{Firstname: "Manfred2", Lastname: "Touron2", Email: "m@42.am2", Username: "moul2"},
&sgtmpb.User{Firstname: "Manfred2", Lastname: "Touron2", Email: "m@42.am2", Username: "moul2"},
&sgtmpb.User{Firstname: "Manfred2", Lastname: "Touron2", Email: "m@42.am2", Slug: "moul2"},
&sgtmpb.User{Firstname: "Manfred2", Lastname: "Touron2", Email: "m@42.am2", Slug: "moul2"},
false,
},
{
"manfred:again",
&sgtmpb.User{Firstname: "Manfred", Lastname: "Touron", Email: "m@42.am", Username: "moul"},
&sgtmpb.User{Firstname: "Manfred", Lastname: "Touron", Email: "m@42.am", Slug: "moul"},
nil,
true,
},
{
"manfred2:again",
&sgtmpb.User{Firstname: "Manfred2", Lastname: "Touron2", Email: "m@42.am2", Username: "moul2"},
&sgtmpb.User{Firstname: "Manfred2", Lastname: "Touron2", Email: "m@42.am2", Slug: "moul2"},
nil,
true,
},
Expand Down

0 comments on commit 2c85c6b

Please sign in to comment.