add triggers for users table
This commit is contained in:
parent
abf0ff77f0
commit
cdd9627af3
@ -16,9 +16,9 @@ type createUserInput struct {
|
||||
}
|
||||
|
||||
type createUserOutput struct {
|
||||
Id string `json:"id"`
|
||||
Email string `json:"email"`
|
||||
Name string `json:"name"`
|
||||
Id string `json:"id"`
|
||||
Email string `json:"email"`
|
||||
FullName string `json:"fullName"`
|
||||
}
|
||||
|
||||
func NewUserCreateHandler(log logger.Logger, userService services.UserService) gin.HandlerFunc {
|
||||
@ -37,9 +37,9 @@ func NewUserCreateHandler(log logger.Logger, userService services.UserService) g
|
||||
}
|
||||
|
||||
return createUserOutput{
|
||||
Id: user.Id,
|
||||
Email: user.Email,
|
||||
Name: user.Name,
|
||||
Id: user.Id,
|
||||
Email: user.Email,
|
||||
FullName: user.FullName,
|
||||
}, nil
|
||||
},
|
||||
)
|
||||
|
||||
@ -5,10 +5,10 @@ type UserDTO struct {
|
||||
Email string
|
||||
EmailVerified bool
|
||||
Secret string
|
||||
Name string
|
||||
FullName string
|
||||
}
|
||||
|
||||
type UserUpdateDTO struct {
|
||||
Secret string
|
||||
Name string
|
||||
Secret string
|
||||
FullName string
|
||||
}
|
||||
|
||||
@ -38,8 +38,8 @@ func (u *userRepo) CreateUser(ctx context.Context, dto models.UserDTO) (*models.
|
||||
_, span := u.tracer.Start(ctx, "postgres::CreateUser")
|
||||
defer span.End()
|
||||
|
||||
query := `insert into users (email, secret, name) values ($1, $2, $3) returning id;`
|
||||
row := u.db.QueryRowContext(ctx, query, dto.Email, dto.Secret, dto.Name)
|
||||
query := `insert into users (email, secret, full_name) values ($1, $2, $3) returning id;`
|
||||
row := u.db.QueryRowContext(ctx, query, dto.Email, dto.Secret, dto.FullName)
|
||||
|
||||
id := ""
|
||||
if err := row.Scan(&id); err != nil {
|
||||
@ -47,10 +47,10 @@ func (u *userRepo) CreateUser(ctx context.Context, dto models.UserDTO) (*models.
|
||||
}
|
||||
|
||||
return &models.UserDTO{
|
||||
Id: id,
|
||||
Email: dto.Email,
|
||||
Secret: dto.Secret,
|
||||
Name: dto.Name,
|
||||
Id: id,
|
||||
Email: dto.Email,
|
||||
Secret: dto.Secret,
|
||||
FullName: dto.FullName,
|
||||
}, nil
|
||||
}
|
||||
|
||||
@ -58,8 +58,8 @@ func (u *userRepo) UpdateUser(ctx context.Context, userId string, dto models.Use
|
||||
_, span := u.tracer.Start(ctx, "postgres::UpdateUser")
|
||||
defer span.End()
|
||||
|
||||
query := `update users set secret=$1, name=$2 where id = $3;`
|
||||
_, err := u.db.ExecContext(ctx, query, dto.Secret, dto.Name, userId)
|
||||
query := `update users set secret=$1, full_name=$2 where id = $3;`
|
||||
_, err := u.db.ExecContext(ctx, query, dto.Secret, dto.FullName, userId)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@ -84,11 +84,11 @@ func (u *userRepo) GetUserById(ctx context.Context, id string) (*models.UserDTO,
|
||||
_, span := u.tracer.Start(ctx, "postgres::GetUserById")
|
||||
defer span.End()
|
||||
|
||||
query := `select id, email, secret, name, email_verified from users where id = $1;`
|
||||
query := `select id, email, secret, full_name, email_verified from users where id = $1;`
|
||||
row := u.db.QueryRowContext(ctx, query, id)
|
||||
|
||||
dto := &models.UserDTO{}
|
||||
err := row.Scan(&dto.Id, &dto.Email, &dto.Secret, &dto.Name, &dto.EmailVerified)
|
||||
err := row.Scan(&dto.Id, &dto.Email, &dto.Secret, &dto.FullName, &dto.EmailVerified)
|
||||
if err == nil {
|
||||
return dto, nil
|
||||
}
|
||||
@ -103,11 +103,11 @@ func (u *userRepo) GetUserByEmail(ctx context.Context, login string) (*models.Us
|
||||
_, span := u.tracer.Start(ctx, "postgres::GetUserByEmail")
|
||||
defer span.End()
|
||||
|
||||
query := `select id, email, secret, name, email_verified from users where email = $1;`
|
||||
query := `select id, email, secret, full_name, email_verified from users where email = $1;`
|
||||
row := u.db.QueryRowContext(ctx, query, login)
|
||||
|
||||
dto := &models.UserDTO{}
|
||||
err := row.Scan(&dto.Id, &dto.Email, &dto.Secret, &dto.Name, &dto.EmailVerified)
|
||||
err := row.Scan(&dto.Id, &dto.Email, &dto.Secret, &dto.FullName, &dto.EmailVerified)
|
||||
if err == nil {
|
||||
return dto, nil
|
||||
}
|
||||
|
||||
@ -84,9 +84,9 @@ func (u *userService) CreateUser(ctx context.Context, params UserCreateParams) (
|
||||
}
|
||||
|
||||
user := models.UserDTO{
|
||||
Email: params.Email,
|
||||
Secret: string(secret),
|
||||
Name: params.Name,
|
||||
Email: params.Email,
|
||||
Secret: string(secret),
|
||||
FullName: params.Name,
|
||||
}
|
||||
|
||||
result, err := u.deps.UserRepo.CreateUser(ctx, user)
|
||||
@ -257,8 +257,8 @@ func (u *userService) updatePassword(ctx context.Context, user models.UserDTO, n
|
||||
}
|
||||
|
||||
if err = u.deps.UserRepo.UpdateUser(ctx, user.Id, models.UserUpdateDTO{
|
||||
Secret: newSecret,
|
||||
Name: user.Name,
|
||||
Secret: newSecret,
|
||||
FullName: user.FullName,
|
||||
}); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
@ -1,11 +1,41 @@
|
||||
create table if not exists users (
|
||||
id int generated always as identity,
|
||||
email text unique not null,
|
||||
secret text not null,
|
||||
name text not null,
|
||||
id integer primary key generated always as identity,
|
||||
email varchar(256) unique not null,
|
||||
secret varchar(256) not null,
|
||||
full_name varchar(256) not null,
|
||||
email_verified boolean not null default false,
|
||||
|
||||
primary key (id)
|
||||
created_at timestamp,
|
||||
updated_at timestamp
|
||||
);
|
||||
|
||||
create index if not exists users_email_idx on users(email);
|
||||
|
||||
create or replace function set_created_at()
|
||||
returns trigger as $$
|
||||
begin
|
||||
new.created_at = now();
|
||||
new.updated_at = now();
|
||||
return new;
|
||||
end;
|
||||
$$ language plpgsql;
|
||||
|
||||
create or replace trigger on_user_created
|
||||
before insert on users
|
||||
for each row
|
||||
execute function set_created_at();
|
||||
|
||||
create or replace function set_updated_at()
|
||||
returns trigger as $$
|
||||
begin
|
||||
if new is distinct from old then
|
||||
new.updated_at = now();
|
||||
end if;
|
||||
return new;
|
||||
end;
|
||||
$$ language plpgsql;
|
||||
|
||||
create or replace trigger on_user_updated
|
||||
before update on users
|
||||
for each row
|
||||
when(new is distinct from old)
|
||||
execute function set_updated_at();
|
||||
Loading…
x
Reference in New Issue
Block a user