feat(backend): add DELETE /users/@me endpoint
This commit is contained in:
		
							parent
							
								
									c4b8b26ec7
								
							
						
					
					
						commit
						ff3d612b06
					
				
					 9 changed files with 162 additions and 45 deletions
				
			
		| 
						 | 
				
			
			@ -5,23 +5,27 @@ package queries
 | 
			
		|||
import (
 | 
			
		||||
	"context"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"github.com/jackc/pgtype"
 | 
			
		||||
	"github.com/jackc/pgx/v4"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
const getUserByIDSQL = `SELECT * FROM users WHERE id = $1;`
 | 
			
		||||
 | 
			
		||||
type GetUserByIDRow struct {
 | 
			
		||||
	ID              string         `json:"id"`
 | 
			
		||||
	Username        string         `json:"username"`
 | 
			
		||||
	DisplayName     *string        `json:"display_name"`
 | 
			
		||||
	Bio             *string        `json:"bio"`
 | 
			
		||||
	AvatarUrls      []string       `json:"avatar_urls"`
 | 
			
		||||
	Links           []string       `json:"links"`
 | 
			
		||||
	Discord         *string        `json:"discord"`
 | 
			
		||||
	DiscordUsername *string        `json:"discord_username"`
 | 
			
		||||
	MaxInvites      int32          `json:"max_invites"`
 | 
			
		||||
	Names           []FieldEntry   `json:"names"`
 | 
			
		||||
	Pronouns        []PronounEntry `json:"pronouns"`
 | 
			
		||||
	ID              string             `json:"id"`
 | 
			
		||||
	Username        string             `json:"username"`
 | 
			
		||||
	DisplayName     *string            `json:"display_name"`
 | 
			
		||||
	Bio             *string            `json:"bio"`
 | 
			
		||||
	AvatarUrls      []string           `json:"avatar_urls"`
 | 
			
		||||
	Links           []string           `json:"links"`
 | 
			
		||||
	Discord         *string            `json:"discord"`
 | 
			
		||||
	DiscordUsername *string            `json:"discord_username"`
 | 
			
		||||
	MaxInvites      int32              `json:"max_invites"`
 | 
			
		||||
	Names           []FieldEntry       `json:"names"`
 | 
			
		||||
	Pronouns        []PronounEntry     `json:"pronouns"`
 | 
			
		||||
	DeletedAt       pgtype.Timestamptz `json:"deleted_at"`
 | 
			
		||||
	SelfDelete      *bool              `json:"self_delete"`
 | 
			
		||||
	DeleteReason    *string            `json:"delete_reason"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetUserByID implements Querier.GetUserByID.
 | 
			
		||||
| 
						 | 
				
			
			@ -31,7 +35,7 @@ func (q *DBQuerier) GetUserByID(ctx context.Context, id string) (GetUserByIDRow,
 | 
			
		|||
	var item GetUserByIDRow
 | 
			
		||||
	namesArray := q.types.newFieldEntryArray()
 | 
			
		||||
	pronounsArray := q.types.newPronounEntryArray()
 | 
			
		||||
	if err := row.Scan(&item.ID, &item.Username, &item.DisplayName, &item.Bio, &item.AvatarUrls, &item.Links, &item.Discord, &item.DiscordUsername, &item.MaxInvites, namesArray, pronounsArray); err != nil {
 | 
			
		||||
	if err := row.Scan(&item.ID, &item.Username, &item.DisplayName, &item.Bio, &item.AvatarUrls, &item.Links, &item.Discord, &item.DiscordUsername, &item.MaxInvites, namesArray, pronounsArray, &item.DeletedAt, &item.SelfDelete, &item.DeleteReason); err != nil {
 | 
			
		||||
		return item, fmt.Errorf("query GetUserByID: %w", err)
 | 
			
		||||
	}
 | 
			
		||||
	if err := namesArray.AssignTo(&item.Names); err != nil {
 | 
			
		||||
| 
						 | 
				
			
			@ -54,7 +58,7 @@ func (q *DBQuerier) GetUserByIDScan(results pgx.BatchResults) (GetUserByIDRow, e
 | 
			
		|||
	var item GetUserByIDRow
 | 
			
		||||
	namesArray := q.types.newFieldEntryArray()
 | 
			
		||||
	pronounsArray := q.types.newPronounEntryArray()
 | 
			
		||||
	if err := row.Scan(&item.ID, &item.Username, &item.DisplayName, &item.Bio, &item.AvatarUrls, &item.Links, &item.Discord, &item.DiscordUsername, &item.MaxInvites, namesArray, pronounsArray); err != nil {
 | 
			
		||||
	if err := row.Scan(&item.ID, &item.Username, &item.DisplayName, &item.Bio, &item.AvatarUrls, &item.Links, &item.Discord, &item.DiscordUsername, &item.MaxInvites, namesArray, pronounsArray, &item.DeletedAt, &item.SelfDelete, &item.DeleteReason); err != nil {
 | 
			
		||||
		return item, fmt.Errorf("scan GetUserByIDBatch row: %w", err)
 | 
			
		||||
	}
 | 
			
		||||
	if err := namesArray.AssignTo(&item.Names); err != nil {
 | 
			
		||||
| 
						 | 
				
			
			@ -69,17 +73,20 @@ func (q *DBQuerier) GetUserByIDScan(results pgx.BatchResults) (GetUserByIDRow, e
 | 
			
		|||
const getUserByUsernameSQL = `SELECT * FROM users WHERE username = $1;`
 | 
			
		||||
 | 
			
		||||
type GetUserByUsernameRow struct {
 | 
			
		||||
	ID              string         `json:"id"`
 | 
			
		||||
	Username        string         `json:"username"`
 | 
			
		||||
	DisplayName     *string        `json:"display_name"`
 | 
			
		||||
	Bio             *string        `json:"bio"`
 | 
			
		||||
	AvatarUrls      []string       `json:"avatar_urls"`
 | 
			
		||||
	Links           []string       `json:"links"`
 | 
			
		||||
	Discord         *string        `json:"discord"`
 | 
			
		||||
	DiscordUsername *string        `json:"discord_username"`
 | 
			
		||||
	MaxInvites      int32          `json:"max_invites"`
 | 
			
		||||
	Names           []FieldEntry   `json:"names"`
 | 
			
		||||
	Pronouns        []PronounEntry `json:"pronouns"`
 | 
			
		||||
	ID              string             `json:"id"`
 | 
			
		||||
	Username        string             `json:"username"`
 | 
			
		||||
	DisplayName     *string            `json:"display_name"`
 | 
			
		||||
	Bio             *string            `json:"bio"`
 | 
			
		||||
	AvatarUrls      []string           `json:"avatar_urls"`
 | 
			
		||||
	Links           []string           `json:"links"`
 | 
			
		||||
	Discord         *string            `json:"discord"`
 | 
			
		||||
	DiscordUsername *string            `json:"discord_username"`
 | 
			
		||||
	MaxInvites      int32              `json:"max_invites"`
 | 
			
		||||
	Names           []FieldEntry       `json:"names"`
 | 
			
		||||
	Pronouns        []PronounEntry     `json:"pronouns"`
 | 
			
		||||
	DeletedAt       pgtype.Timestamptz `json:"deleted_at"`
 | 
			
		||||
	SelfDelete      *bool              `json:"self_delete"`
 | 
			
		||||
	DeleteReason    *string            `json:"delete_reason"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// GetUserByUsername implements Querier.GetUserByUsername.
 | 
			
		||||
| 
						 | 
				
			
			@ -89,7 +96,7 @@ func (q *DBQuerier) GetUserByUsername(ctx context.Context, username string) (Get
 | 
			
		|||
	var item GetUserByUsernameRow
 | 
			
		||||
	namesArray := q.types.newFieldEntryArray()
 | 
			
		||||
	pronounsArray := q.types.newPronounEntryArray()
 | 
			
		||||
	if err := row.Scan(&item.ID, &item.Username, &item.DisplayName, &item.Bio, &item.AvatarUrls, &item.Links, &item.Discord, &item.DiscordUsername, &item.MaxInvites, namesArray, pronounsArray); err != nil {
 | 
			
		||||
	if err := row.Scan(&item.ID, &item.Username, &item.DisplayName, &item.Bio, &item.AvatarUrls, &item.Links, &item.Discord, &item.DiscordUsername, &item.MaxInvites, namesArray, pronounsArray, &item.DeletedAt, &item.SelfDelete, &item.DeleteReason); err != nil {
 | 
			
		||||
		return item, fmt.Errorf("query GetUserByUsername: %w", err)
 | 
			
		||||
	}
 | 
			
		||||
	if err := namesArray.AssignTo(&item.Names); err != nil {
 | 
			
		||||
| 
						 | 
				
			
			@ -112,7 +119,7 @@ func (q *DBQuerier) GetUserByUsernameScan(results pgx.BatchResults) (GetUserByUs
 | 
			
		|||
	var item GetUserByUsernameRow
 | 
			
		||||
	namesArray := q.types.newFieldEntryArray()
 | 
			
		||||
	pronounsArray := q.types.newPronounEntryArray()
 | 
			
		||||
	if err := row.Scan(&item.ID, &item.Username, &item.DisplayName, &item.Bio, &item.AvatarUrls, &item.Links, &item.Discord, &item.DiscordUsername, &item.MaxInvites, namesArray, pronounsArray); err != nil {
 | 
			
		||||
	if err := row.Scan(&item.ID, &item.Username, &item.DisplayName, &item.Bio, &item.AvatarUrls, &item.Links, &item.Discord, &item.DiscordUsername, &item.MaxInvites, namesArray, pronounsArray, &item.DeletedAt, &item.SelfDelete, &item.DeleteReason); err != nil {
 | 
			
		||||
		return item, fmt.Errorf("scan GetUserByUsernameBatch row: %w", err)
 | 
			
		||||
	}
 | 
			
		||||
	if err := namesArray.AssignTo(&item.Names); err != nil {
 | 
			
		||||
| 
						 | 
				
			
			@ -137,17 +144,20 @@ type UpdateUserNamesPronounsParams struct {
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
type UpdateUserNamesPronounsRow struct {
 | 
			
		||||
	ID              string         `json:"id"`
 | 
			
		||||
	Username        string         `json:"username"`
 | 
			
		||||
	DisplayName     *string        `json:"display_name"`
 | 
			
		||||
	Bio             *string        `json:"bio"`
 | 
			
		||||
	AvatarUrls      []string       `json:"avatar_urls"`
 | 
			
		||||
	Links           []string       `json:"links"`
 | 
			
		||||
	Discord         *string        `json:"discord"`
 | 
			
		||||
	DiscordUsername *string        `json:"discord_username"`
 | 
			
		||||
	MaxInvites      int32          `json:"max_invites"`
 | 
			
		||||
	Names           []FieldEntry   `json:"names"`
 | 
			
		||||
	Pronouns        []PronounEntry `json:"pronouns"`
 | 
			
		||||
	ID              string             `json:"id"`
 | 
			
		||||
	Username        string             `json:"username"`
 | 
			
		||||
	DisplayName     *string            `json:"display_name"`
 | 
			
		||||
	Bio             *string            `json:"bio"`
 | 
			
		||||
	AvatarUrls      []string           `json:"avatar_urls"`
 | 
			
		||||
	Links           []string           `json:"links"`
 | 
			
		||||
	Discord         *string            `json:"discord"`
 | 
			
		||||
	DiscordUsername *string            `json:"discord_username"`
 | 
			
		||||
	MaxInvites      int32              `json:"max_invites"`
 | 
			
		||||
	Names           []FieldEntry       `json:"names"`
 | 
			
		||||
	Pronouns        []PronounEntry     `json:"pronouns"`
 | 
			
		||||
	DeletedAt       pgtype.Timestamptz `json:"deleted_at"`
 | 
			
		||||
	SelfDelete      *bool              `json:"self_delete"`
 | 
			
		||||
	DeleteReason    *string            `json:"delete_reason"`
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// UpdateUserNamesPronouns implements Querier.UpdateUserNamesPronouns.
 | 
			
		||||
| 
						 | 
				
			
			@ -157,7 +167,7 @@ func (q *DBQuerier) UpdateUserNamesPronouns(ctx context.Context, params UpdateUs
 | 
			
		|||
	var item UpdateUserNamesPronounsRow
 | 
			
		||||
	namesArray := q.types.newFieldEntryArray()
 | 
			
		||||
	pronounsArray := q.types.newPronounEntryArray()
 | 
			
		||||
	if err := row.Scan(&item.ID, &item.Username, &item.DisplayName, &item.Bio, &item.AvatarUrls, &item.Links, &item.Discord, &item.DiscordUsername, &item.MaxInvites, namesArray, pronounsArray); err != nil {
 | 
			
		||||
	if err := row.Scan(&item.ID, &item.Username, &item.DisplayName, &item.Bio, &item.AvatarUrls, &item.Links, &item.Discord, &item.DiscordUsername, &item.MaxInvites, namesArray, pronounsArray, &item.DeletedAt, &item.SelfDelete, &item.DeleteReason); err != nil {
 | 
			
		||||
		return item, fmt.Errorf("query UpdateUserNamesPronouns: %w", err)
 | 
			
		||||
	}
 | 
			
		||||
	if err := namesArray.AssignTo(&item.Names); err != nil {
 | 
			
		||||
| 
						 | 
				
			
			@ -180,7 +190,7 @@ func (q *DBQuerier) UpdateUserNamesPronounsScan(results pgx.BatchResults) (Updat
 | 
			
		|||
	var item UpdateUserNamesPronounsRow
 | 
			
		||||
	namesArray := q.types.newFieldEntryArray()
 | 
			
		||||
	pronounsArray := q.types.newPronounEntryArray()
 | 
			
		||||
	if err := row.Scan(&item.ID, &item.Username, &item.DisplayName, &item.Bio, &item.AvatarUrls, &item.Links, &item.Discord, &item.DiscordUsername, &item.MaxInvites, namesArray, pronounsArray); err != nil {
 | 
			
		||||
	if err := row.Scan(&item.ID, &item.Username, &item.DisplayName, &item.Bio, &item.AvatarUrls, &item.Links, &item.Discord, &item.DiscordUsername, &item.MaxInvites, namesArray, pronounsArray, &item.DeletedAt, &item.SelfDelete, &item.DeleteReason); err != nil {
 | 
			
		||||
		return item, fmt.Errorf("scan UpdateUserNamesPronounsBatch row: %w", err)
 | 
			
		||||
	}
 | 
			
		||||
	if err := namesArray.AssignTo(&item.Names); err != nil {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue