Sql request for blogs/users/categories/profiles tables
This commit is contained in:
parent
29b35e931a
commit
6b4fe31d67
@ -12,11 +12,6 @@ import {
|
|||||||
ThemePanel,
|
ThemePanel,
|
||||||
} from "@radix-ui/themes";
|
} from "@radix-ui/themes";
|
||||||
|
|
||||||
import { useTranslation } from "react-i18next";
|
|
||||||
import { useRef, useState } from "react";
|
|
||||||
import parse from "html-react-parser";
|
|
||||||
import Editor from "./Components/Editor/Editor";
|
|
||||||
|
|
||||||
import {
|
import {
|
||||||
Router,
|
Router,
|
||||||
Route,
|
Route,
|
||||||
|
|||||||
123
enshi_back/db/go_queries/blogs_queries.sql.go
Normal file
123
enshi_back/db/go_queries/blogs_queries.sql.go
Normal file
@ -0,0 +1,123 @@
|
|||||||
|
// Code generated by sqlc. DO NOT EDIT.
|
||||||
|
// versions:
|
||||||
|
// sqlc v1.27.0
|
||||||
|
// source: blogs_queries.sql
|
||||||
|
|
||||||
|
package db_repo
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"github.com/jackc/pgx/v5/pgtype"
|
||||||
|
)
|
||||||
|
|
||||||
|
const createBlogByUserId = `-- name: CreateBlogByUserId :one
|
||||||
|
INSERT INTO public.blogs
|
||||||
|
(blog_id, user_id, title, description, category_id, created_at)
|
||||||
|
VALUES($1, $2, $3, $4, $5, CURRENT_TIMESTAMP)
|
||||||
|
RETURNING blog_id, user_id, title, description, category_id, created_at
|
||||||
|
`
|
||||||
|
|
||||||
|
type CreateBlogByUserIdParams struct {
|
||||||
|
BlogID int64 `json:"blog_id"`
|
||||||
|
UserID int64 `json:"user_id"`
|
||||||
|
Title pgtype.Text `json:"title"`
|
||||||
|
Description pgtype.Text `json:"description"`
|
||||||
|
CategoryID pgtype.Int4 `json:"category_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (q *Queries) CreateBlogByUserId(ctx context.Context, arg CreateBlogByUserIdParams) (Blog, error) {
|
||||||
|
row := q.db.QueryRow(ctx, createBlogByUserId,
|
||||||
|
arg.BlogID,
|
||||||
|
arg.UserID,
|
||||||
|
arg.Title,
|
||||||
|
arg.Description,
|
||||||
|
arg.CategoryID,
|
||||||
|
)
|
||||||
|
var i Blog
|
||||||
|
err := row.Scan(
|
||||||
|
&i.BlogID,
|
||||||
|
&i.UserID,
|
||||||
|
&i.Title,
|
||||||
|
&i.Description,
|
||||||
|
&i.CategoryID,
|
||||||
|
&i.CreatedAt,
|
||||||
|
)
|
||||||
|
return i, err
|
||||||
|
}
|
||||||
|
|
||||||
|
const deleteBlogByBlogId = `-- name: DeleteBlogByBlogId :exec
|
||||||
|
DELETE FROM public.blogs
|
||||||
|
WHERE blog_id=$1
|
||||||
|
`
|
||||||
|
|
||||||
|
func (q *Queries) DeleteBlogByBlogId(ctx context.Context, blogID int64) error {
|
||||||
|
_, err := q.db.Exec(ctx, deleteBlogByBlogId, blogID)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
const getBlogsByUserId = `-- name: GetBlogsByUserId :many
|
||||||
|
SELECT blog_id, user_id, title, description, category_id, created_at
|
||||||
|
FROM public.blogs
|
||||||
|
WHERE user_id = $1
|
||||||
|
`
|
||||||
|
|
||||||
|
func (q *Queries) GetBlogsByUserId(ctx context.Context, userID int64) ([]Blog, error) {
|
||||||
|
rows, err := q.db.Query(ctx, getBlogsByUserId, userID)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer rows.Close()
|
||||||
|
var items []Blog
|
||||||
|
for rows.Next() {
|
||||||
|
var i Blog
|
||||||
|
if err := rows.Scan(
|
||||||
|
&i.BlogID,
|
||||||
|
&i.UserID,
|
||||||
|
&i.Title,
|
||||||
|
&i.Description,
|
||||||
|
&i.CategoryID,
|
||||||
|
&i.CreatedAt,
|
||||||
|
); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
items = append(items, i)
|
||||||
|
}
|
||||||
|
if err := rows.Err(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return items, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
const updateBlogInfoByBlogId = `-- name: UpdateBlogInfoByBlogId :one
|
||||||
|
UPDATE public.blogs
|
||||||
|
SET title=$1, description=$2, category_id=$3
|
||||||
|
WHERE blog_id=$4
|
||||||
|
RETURNING blog_id, user_id, title, description, category_id, created_at
|
||||||
|
`
|
||||||
|
|
||||||
|
type UpdateBlogInfoByBlogIdParams struct {
|
||||||
|
Title pgtype.Text `json:"title"`
|
||||||
|
Description pgtype.Text `json:"description"`
|
||||||
|
CategoryID pgtype.Int4 `json:"category_id"`
|
||||||
|
BlogID int64 `json:"blog_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (q *Queries) UpdateBlogInfoByBlogId(ctx context.Context, arg UpdateBlogInfoByBlogIdParams) (Blog, error) {
|
||||||
|
row := q.db.QueryRow(ctx, updateBlogInfoByBlogId,
|
||||||
|
arg.Title,
|
||||||
|
arg.Description,
|
||||||
|
arg.CategoryID,
|
||||||
|
arg.BlogID,
|
||||||
|
)
|
||||||
|
var i Blog
|
||||||
|
err := row.Scan(
|
||||||
|
&i.BlogID,
|
||||||
|
&i.UserID,
|
||||||
|
&i.Title,
|
||||||
|
&i.Description,
|
||||||
|
&i.CategoryID,
|
||||||
|
&i.CreatedAt,
|
||||||
|
)
|
||||||
|
return i, err
|
||||||
|
}
|
||||||
74
enshi_back/db/go_queries/categories_queries.sql.go
Normal file
74
enshi_back/db/go_queries/categories_queries.sql.go
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
// Code generated by sqlc. DO NOT EDIT.
|
||||||
|
// versions:
|
||||||
|
// sqlc v1.27.0
|
||||||
|
// source: categories_queries.sql
|
||||||
|
|
||||||
|
package db_repo
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
)
|
||||||
|
|
||||||
|
const createCategory = `-- name: CreateCategory :one
|
||||||
|
INSERT INTO public.categories
|
||||||
|
(category_id, category_name)
|
||||||
|
VALUES($1, $2)
|
||||||
|
RETURNING category_id, category_name
|
||||||
|
`
|
||||||
|
|
||||||
|
type CreateCategoryParams struct {
|
||||||
|
CategoryID int32 `json:"category_id"`
|
||||||
|
CategoryName string `json:"category_name"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (q *Queries) CreateCategory(ctx context.Context, arg CreateCategoryParams) (Category, error) {
|
||||||
|
row := q.db.QueryRow(ctx, createCategory, arg.CategoryID, arg.CategoryName)
|
||||||
|
var i Category
|
||||||
|
err := row.Scan(&i.CategoryID, &i.CategoryName)
|
||||||
|
return i, err
|
||||||
|
}
|
||||||
|
|
||||||
|
const deleteCategoryById = `-- name: DeleteCategoryById :exec
|
||||||
|
DELETE FROM public.categories
|
||||||
|
WHERE category_id=$1
|
||||||
|
`
|
||||||
|
|
||||||
|
func (q *Queries) DeleteCategoryById(ctx context.Context, categoryID int32) error {
|
||||||
|
_, err := q.db.Exec(ctx, deleteCategoryById, categoryID)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
const getAllCategories = `-- name: GetAllCategories :many
|
||||||
|
SELECT category_id, category_name FROM public.categories
|
||||||
|
`
|
||||||
|
|
||||||
|
func (q *Queries) GetAllCategories(ctx context.Context) ([]Category, error) {
|
||||||
|
rows, err := q.db.Query(ctx, getAllCategories)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer rows.Close()
|
||||||
|
var items []Category
|
||||||
|
for rows.Next() {
|
||||||
|
var i Category
|
||||||
|
if err := rows.Scan(&i.CategoryID, &i.CategoryName); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
items = append(items, i)
|
||||||
|
}
|
||||||
|
if err := rows.Err(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return items, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
const getCategoryByName = `-- name: GetCategoryByName :one
|
||||||
|
SELECT category_id, category_name FROM public.categories WHERE category_name = $1
|
||||||
|
`
|
||||||
|
|
||||||
|
func (q *Queries) GetCategoryByName(ctx context.Context, categoryName string) (Category, error) {
|
||||||
|
row := q.db.QueryRow(ctx, getCategoryByName, categoryName)
|
||||||
|
var i Category
|
||||||
|
err := row.Scan(&i.CategoryID, &i.CategoryName)
|
||||||
|
return i, err
|
||||||
|
}
|
||||||
@ -89,4 +89,5 @@ type User struct {
|
|||||||
Email string `json:"email"`
|
Email string `json:"email"`
|
||||||
Password string `json:"password"`
|
Password string `json:"password"`
|
||||||
CreatedAt pgtype.Timestamp `json:"created_at"`
|
CreatedAt pgtype.Timestamp `json:"created_at"`
|
||||||
|
IsAdmin bool `json:"is_admin"`
|
||||||
}
|
}
|
||||||
116
enshi_back/db/go_queries/profiles_queries.sql.go
Normal file
116
enshi_back/db/go_queries/profiles_queries.sql.go
Normal file
@ -0,0 +1,116 @@
|
|||||||
|
// Code generated by sqlc. DO NOT EDIT.
|
||||||
|
// versions:
|
||||||
|
// sqlc v1.27.0
|
||||||
|
// source: profiles_queries.sql
|
||||||
|
|
||||||
|
package db_repo
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"github.com/jackc/pgx/v5/pgtype"
|
||||||
|
)
|
||||||
|
|
||||||
|
const clearProfileByUserId = `-- name: ClearProfileByUserId :one
|
||||||
|
UPDATE public.profiles
|
||||||
|
SET bio='', avatar_url='', website_url=''
|
||||||
|
WHERE user_id=$1
|
||||||
|
RETURNING profile_id, user_id, bio, avatar_url, website_url
|
||||||
|
`
|
||||||
|
|
||||||
|
func (q *Queries) ClearProfileByUserId(ctx context.Context, userID pgtype.Int8) (Profile, error) {
|
||||||
|
row := q.db.QueryRow(ctx, clearProfileByUserId, userID)
|
||||||
|
var i Profile
|
||||||
|
err := row.Scan(
|
||||||
|
&i.ProfileID,
|
||||||
|
&i.UserID,
|
||||||
|
&i.Bio,
|
||||||
|
&i.AvatarUrl,
|
||||||
|
&i.WebsiteUrl,
|
||||||
|
)
|
||||||
|
return i, err
|
||||||
|
}
|
||||||
|
|
||||||
|
const createProfileForUser = `-- name: CreateProfileForUser :one
|
||||||
|
INSERT INTO public.profiles
|
||||||
|
(profile_id, user_id, bio, avatar_url, website_url)
|
||||||
|
VALUES($1, $2, '', '', '')
|
||||||
|
RETURNING profile_id, user_id, bio, avatar_url, website_url
|
||||||
|
`
|
||||||
|
|
||||||
|
type CreateProfileForUserParams struct {
|
||||||
|
ProfileID int64 `json:"profile_id"`
|
||||||
|
UserID pgtype.Int8 `json:"user_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (q *Queries) CreateProfileForUser(ctx context.Context, arg CreateProfileForUserParams) (Profile, error) {
|
||||||
|
row := q.db.QueryRow(ctx, createProfileForUser, arg.ProfileID, arg.UserID)
|
||||||
|
var i Profile
|
||||||
|
err := row.Scan(
|
||||||
|
&i.ProfileID,
|
||||||
|
&i.UserID,
|
||||||
|
&i.Bio,
|
||||||
|
&i.AvatarUrl,
|
||||||
|
&i.WebsiteUrl,
|
||||||
|
)
|
||||||
|
return i, err
|
||||||
|
}
|
||||||
|
|
||||||
|
const deleteProfileByUserId = `-- name: DeleteProfileByUserId :exec
|
||||||
|
DELETE FROM public.profiles
|
||||||
|
WHERE user_id=$1
|
||||||
|
`
|
||||||
|
|
||||||
|
func (q *Queries) DeleteProfileByUserId(ctx context.Context, userID pgtype.Int8) error {
|
||||||
|
_, err := q.db.Exec(ctx, deleteProfileByUserId, userID)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
const getProfileByUserId = `-- name: GetProfileByUserId :one
|
||||||
|
SELECT profile_id, user_id, bio, avatar_url, website_url FROM public.profiles WHERE user_id = $1
|
||||||
|
`
|
||||||
|
|
||||||
|
func (q *Queries) GetProfileByUserId(ctx context.Context, userID pgtype.Int8) (Profile, error) {
|
||||||
|
row := q.db.QueryRow(ctx, getProfileByUserId, userID)
|
||||||
|
var i Profile
|
||||||
|
err := row.Scan(
|
||||||
|
&i.ProfileID,
|
||||||
|
&i.UserID,
|
||||||
|
&i.Bio,
|
||||||
|
&i.AvatarUrl,
|
||||||
|
&i.WebsiteUrl,
|
||||||
|
)
|
||||||
|
return i, err
|
||||||
|
}
|
||||||
|
|
||||||
|
const updateProfileByUserId = `-- name: UpdateProfileByUserId :one
|
||||||
|
UPDATE public.profiles
|
||||||
|
SET bio=$2, avatar_url=$3, website_url=$4
|
||||||
|
WHERE profile_id=$1
|
||||||
|
RETURNING profile_id, user_id, bio, avatar_url, website_url
|
||||||
|
`
|
||||||
|
|
||||||
|
type UpdateProfileByUserIdParams struct {
|
||||||
|
ProfileID int64 `json:"profile_id"`
|
||||||
|
Bio pgtype.Text `json:"bio"`
|
||||||
|
AvatarUrl pgtype.Text `json:"avatar_url"`
|
||||||
|
WebsiteUrl pgtype.Text `json:"website_url"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (q *Queries) UpdateProfileByUserId(ctx context.Context, arg UpdateProfileByUserIdParams) (Profile, error) {
|
||||||
|
row := q.db.QueryRow(ctx, updateProfileByUserId,
|
||||||
|
arg.ProfileID,
|
||||||
|
arg.Bio,
|
||||||
|
arg.AvatarUrl,
|
||||||
|
arg.WebsiteUrl,
|
||||||
|
)
|
||||||
|
var i Profile
|
||||||
|
err := row.Scan(
|
||||||
|
&i.ProfileID,
|
||||||
|
&i.UserID,
|
||||||
|
&i.Bio,
|
||||||
|
&i.AvatarUrl,
|
||||||
|
&i.WebsiteUrl,
|
||||||
|
)
|
||||||
|
return i, err
|
||||||
|
}
|
||||||
156
enshi_back/db/go_queries/users_queries.sql.go
Normal file
156
enshi_back/db/go_queries/users_queries.sql.go
Normal file
@ -0,0 +1,156 @@
|
|||||||
|
// Code generated by sqlc. DO NOT EDIT.
|
||||||
|
// versions:
|
||||||
|
// sqlc v1.27.0
|
||||||
|
// source: users_queries.sql
|
||||||
|
|
||||||
|
package db_repo
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
)
|
||||||
|
|
||||||
|
const createUser = `-- name: CreateUser :one
|
||||||
|
INSERT INTO public.users
|
||||||
|
(user_id, username, email, "password", created_at, is_admin)
|
||||||
|
VALUES($1, $2, $3, $4, CURRENT_TIMESTAMP, false)
|
||||||
|
RETURNING user_id, username, email, password, created_at, is_admin
|
||||||
|
`
|
||||||
|
|
||||||
|
type CreateUserParams struct {
|
||||||
|
UserID int64 `json:"user_id"`
|
||||||
|
Username string `json:"username"`
|
||||||
|
Email string `json:"email"`
|
||||||
|
Password string `json:"password"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (q *Queries) CreateUser(ctx context.Context, arg CreateUserParams) (User, error) {
|
||||||
|
row := q.db.QueryRow(ctx, createUser,
|
||||||
|
arg.UserID,
|
||||||
|
arg.Username,
|
||||||
|
arg.Email,
|
||||||
|
arg.Password,
|
||||||
|
)
|
||||||
|
var i User
|
||||||
|
err := row.Scan(
|
||||||
|
&i.UserID,
|
||||||
|
&i.Username,
|
||||||
|
&i.Email,
|
||||||
|
&i.Password,
|
||||||
|
&i.CreatedAt,
|
||||||
|
&i.IsAdmin,
|
||||||
|
)
|
||||||
|
return i, err
|
||||||
|
}
|
||||||
|
|
||||||
|
const deleteUserById = `-- name: DeleteUserById :exec
|
||||||
|
DELETE FROM public.users
|
||||||
|
WHERE user_id=$1
|
||||||
|
`
|
||||||
|
|
||||||
|
func (q *Queries) DeleteUserById(ctx context.Context, userID int64) error {
|
||||||
|
_, err := q.db.Exec(ctx, deleteUserById, userID)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
const deleteUserByUsername = `-- name: DeleteUserByUsername :exec
|
||||||
|
DELETE FROM public.users
|
||||||
|
WHERE username=$1
|
||||||
|
`
|
||||||
|
|
||||||
|
func (q *Queries) DeleteUserByUsername(ctx context.Context, username string) error {
|
||||||
|
_, err := q.db.Exec(ctx, deleteUserByUsername, username)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
const getAllUsers = `-- name: GetAllUsers :many
|
||||||
|
SELECT user_id, username, email, password, created_at, is_admin FROM users
|
||||||
|
`
|
||||||
|
|
||||||
|
func (q *Queries) GetAllUsers(ctx context.Context) ([]User, error) {
|
||||||
|
rows, err := q.db.Query(ctx, getAllUsers)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer rows.Close()
|
||||||
|
var items []User
|
||||||
|
for rows.Next() {
|
||||||
|
var i User
|
||||||
|
if err := rows.Scan(
|
||||||
|
&i.UserID,
|
||||||
|
&i.Username,
|
||||||
|
&i.Email,
|
||||||
|
&i.Password,
|
||||||
|
&i.CreatedAt,
|
||||||
|
&i.IsAdmin,
|
||||||
|
); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
items = append(items, i)
|
||||||
|
}
|
||||||
|
if err := rows.Err(); err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return items, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
const getUserById = `-- name: GetUserById :one
|
||||||
|
SELECT user_id, username, email, password, created_at, is_admin FROM users WHERE user_id = $1
|
||||||
|
`
|
||||||
|
|
||||||
|
func (q *Queries) GetUserById(ctx context.Context, userID int64) (User, error) {
|
||||||
|
row := q.db.QueryRow(ctx, getUserById, userID)
|
||||||
|
var i User
|
||||||
|
err := row.Scan(
|
||||||
|
&i.UserID,
|
||||||
|
&i.Username,
|
||||||
|
&i.Email,
|
||||||
|
&i.Password,
|
||||||
|
&i.CreatedAt,
|
||||||
|
&i.IsAdmin,
|
||||||
|
)
|
||||||
|
return i, err
|
||||||
|
}
|
||||||
|
|
||||||
|
const getUserByUsername = `-- name: GetUserByUsername :one
|
||||||
|
SELECT user_id, username, email, password, created_at, is_admin FROM users WHERE username = $1
|
||||||
|
`
|
||||||
|
|
||||||
|
func (q *Queries) GetUserByUsername(ctx context.Context, username string) (User, error) {
|
||||||
|
row := q.db.QueryRow(ctx, getUserByUsername, username)
|
||||||
|
var i User
|
||||||
|
err := row.Scan(
|
||||||
|
&i.UserID,
|
||||||
|
&i.Username,
|
||||||
|
&i.Email,
|
||||||
|
&i.Password,
|
||||||
|
&i.CreatedAt,
|
||||||
|
&i.IsAdmin,
|
||||||
|
)
|
||||||
|
return i, err
|
||||||
|
}
|
||||||
|
|
||||||
|
const updateUserPasswordHash = `-- name: UpdateUserPasswordHash :one
|
||||||
|
UPDATE public.users
|
||||||
|
SET "password"=$1
|
||||||
|
WHERE user_id=$2
|
||||||
|
RETURNING user_id, username, email, password, created_at, is_admin
|
||||||
|
`
|
||||||
|
|
||||||
|
type UpdateUserPasswordHashParams struct {
|
||||||
|
Password string `json:"password"`
|
||||||
|
UserID int64 `json:"user_id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (q *Queries) UpdateUserPasswordHash(ctx context.Context, arg UpdateUserPasswordHashParams) (User, error) {
|
||||||
|
row := q.db.QueryRow(ctx, updateUserPasswordHash, arg.Password, arg.UserID)
|
||||||
|
var i User
|
||||||
|
err := row.Scan(
|
||||||
|
&i.UserID,
|
||||||
|
&i.Username,
|
||||||
|
&i.Email,
|
||||||
|
&i.Password,
|
||||||
|
&i.CreatedAt,
|
||||||
|
&i.IsAdmin,
|
||||||
|
)
|
||||||
|
return i, err
|
||||||
|
}
|
||||||
@ -5,7 +5,7 @@ COMMENT ON SCHEMA "public" IS 'standard public schema';
|
|||||||
-- Create "categories" table
|
-- Create "categories" table
|
||||||
CREATE TABLE "public"."categories" ("category_id" integer NOT NULL, "category_name" character varying(50) NOT NULL, PRIMARY KEY ("category_id"), CONSTRAINT "categories_category_name_key" UNIQUE ("category_name"));
|
CREATE TABLE "public"."categories" ("category_id" integer NOT NULL, "category_name" character varying(50) NOT NULL, PRIMARY KEY ("category_id"), CONSTRAINT "categories_category_name_key" UNIQUE ("category_name"));
|
||||||
-- Create "users" table
|
-- Create "users" table
|
||||||
CREATE TABLE "public"."users" ("user_id" bigint NOT NULL, "username" character varying(50) NOT NULL, "email" character varying(100) NOT NULL, "password" character varying(255) NOT NULL, "created_at" timestamp NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY ("user_id"), CONSTRAINT "users_email_key" UNIQUE ("email"), CONSTRAINT "users_username_key" UNIQUE ("username"));
|
CREATE TABLE "public"."users" ("user_id" bigint NOT NULL, "username" character varying(50) NOT NULL, "email" character varying(100) NOT NULL, "password" character varying(255) NOT NULL, "created_at" timestamp NULL DEFAULT CURRENT_TIMESTAMP, "is_admin" boolean NOT NULL, PRIMARY KEY ("user_id"), CONSTRAINT "users_email_key" UNIQUE ("email"), CONSTRAINT "users_username_key" UNIQUE ("username"));
|
||||||
-- Create "blogs" table
|
-- Create "blogs" table
|
||||||
CREATE TABLE "public"."blogs" ("blog_id" bigint NOT NULL, "user_id" bigint NOT NULL, "title" character varying(255) NULL, "description" text NULL, "category_id" integer NULL, "created_at" timestamp NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY ("blog_id"), CONSTRAINT "blogs_category_id_fkey" FOREIGN KEY ("category_id") REFERENCES "public"."categories" ("category_id") ON UPDATE NO ACTION ON DELETE NO ACTION, CONSTRAINT "blogs_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "public"."users" ("user_id") ON UPDATE NO ACTION ON DELETE CASCADE);
|
CREATE TABLE "public"."blogs" ("blog_id" bigint NOT NULL, "user_id" bigint NOT NULL, "title" character varying(255) NULL, "description" text NULL, "category_id" integer NULL, "created_at" timestamp NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY ("blog_id"), CONSTRAINT "blogs_category_id_fkey" FOREIGN KEY ("category_id") REFERENCES "public"."categories" ("category_id") ON UPDATE NO ACTION ON DELETE NO ACTION, CONSTRAINT "blogs_user_id_fkey" FOREIGN KEY ("user_id") REFERENCES "public"."users" ("user_id") ON UPDATE NO ACTION ON DELETE CASCADE);
|
||||||
-- Create "posts" table
|
-- Create "posts" table
|
||||||
|
|||||||
20
enshi_back/db/queries/blogs_queries.sql
Normal file
20
enshi_back/db/queries/blogs_queries.sql
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
-- name: CreateBlogByUserId :one
|
||||||
|
INSERT INTO public.blogs
|
||||||
|
(blog_id, user_id, title, description, category_id, created_at)
|
||||||
|
VALUES($1, $2, $3, $4, $5, CURRENT_TIMESTAMP)
|
||||||
|
RETURNING *;
|
||||||
|
|
||||||
|
-- name: UpdateBlogInfoByBlogId :one
|
||||||
|
UPDATE public.blogs
|
||||||
|
SET title=$1, description=$2, category_id=$3
|
||||||
|
WHERE blog_id=$4
|
||||||
|
RETURNING *;
|
||||||
|
|
||||||
|
-- name: GetBlogsByUserId :many
|
||||||
|
SELECT *
|
||||||
|
FROM public.blogs
|
||||||
|
WHERE user_id = $1;
|
||||||
|
|
||||||
|
-- name: DeleteBlogByBlogId :exec
|
||||||
|
DELETE FROM public.blogs
|
||||||
|
WHERE blog_id=$1;
|
||||||
16
enshi_back/db/queries/categories_queries.sql
Normal file
16
enshi_back/db/queries/categories_queries.sql
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
-- name: CreateCategory :one
|
||||||
|
INSERT INTO public.categories
|
||||||
|
(category_id, category_name)
|
||||||
|
VALUES($1, $2)
|
||||||
|
RETURNING *;
|
||||||
|
|
||||||
|
-- name: GetAllCategories :many
|
||||||
|
SELECT * FROM public.categories;
|
||||||
|
|
||||||
|
-- name: GetCategoryByName :one
|
||||||
|
SELECT * FROM public.categories WHERE category_name = $1;
|
||||||
|
|
||||||
|
-- name: DeleteCategoryById :exec
|
||||||
|
DELETE FROM public.categories
|
||||||
|
WHERE category_id=$1;
|
||||||
|
|
||||||
25
enshi_back/db/queries/profiles_queries.sql
Normal file
25
enshi_back/db/queries/profiles_queries.sql
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
-- name: CreateProfileForUser :one
|
||||||
|
INSERT INTO public.profiles
|
||||||
|
(profile_id, user_id, bio, avatar_url, website_url)
|
||||||
|
VALUES($1, $2, '', '', '')
|
||||||
|
RETURNING *;
|
||||||
|
|
||||||
|
-- name: ClearProfileByUserId :one
|
||||||
|
UPDATE public.profiles
|
||||||
|
SET bio='', avatar_url='', website_url=''
|
||||||
|
WHERE user_id=$1
|
||||||
|
RETURNING *;
|
||||||
|
|
||||||
|
-- name: DeleteProfileByUserId :exec
|
||||||
|
DELETE FROM public.profiles
|
||||||
|
WHERE user_id=$1;
|
||||||
|
|
||||||
|
-- name: GetProfileByUserId :one
|
||||||
|
SELECT * FROM public.profiles WHERE user_id = $1;
|
||||||
|
|
||||||
|
-- name: UpdateProfileByUserId :one
|
||||||
|
UPDATE public.profiles
|
||||||
|
SET bio=$2, avatar_url=$3, website_url=$4
|
||||||
|
WHERE profile_id=$1
|
||||||
|
RETURNING *;
|
||||||
|
|
||||||
@ -1,4 +0,0 @@
|
|||||||
-- name: GetAllUsers :many
|
|
||||||
SELECT * FROM users;
|
|
||||||
|
|
||||||
|
|
||||||
28
enshi_back/db/queries/users_queries.sql
Normal file
28
enshi_back/db/queries/users_queries.sql
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
-- name: GetAllUsers :many
|
||||||
|
SELECT * FROM users;
|
||||||
|
|
||||||
|
-- name: GetUserById :one
|
||||||
|
SELECT * FROM users WHERE user_id = $1;
|
||||||
|
|
||||||
|
-- name: GetUserByUsername :one
|
||||||
|
SELECT * FROM users WHERE username = $1;
|
||||||
|
|
||||||
|
-- name: CreateUser :one
|
||||||
|
INSERT INTO public.users
|
||||||
|
(user_id, username, email, "password", created_at, is_admin)
|
||||||
|
VALUES($1, $2, $3, $4, CURRENT_TIMESTAMP, false)
|
||||||
|
RETURNING *;
|
||||||
|
|
||||||
|
-- name: UpdateUserPasswordHash :one
|
||||||
|
UPDATE public.users
|
||||||
|
SET "password"=$1
|
||||||
|
WHERE user_id=$2
|
||||||
|
RETURNING *;
|
||||||
|
|
||||||
|
-- name: DeleteUserById :exec
|
||||||
|
DELETE FROM public.users
|
||||||
|
WHERE user_id=$1;
|
||||||
|
|
||||||
|
-- name: DeleteUserByUsername :exec
|
||||||
|
DELETE FROM public.users
|
||||||
|
WHERE username=$1;
|
||||||
@ -7,7 +7,7 @@ sql:
|
|||||||
go:
|
go:
|
||||||
emit_json_tags: true
|
emit_json_tags: true
|
||||||
package: "db_repo"
|
package: "db_repo"
|
||||||
out: "."
|
out: "./go_queries"
|
||||||
sql_package: "pgx/v5"
|
sql_package: "pgx/v5"
|
||||||
overrides:
|
overrides:
|
||||||
- db_type: "uuid"
|
- db_type: "uuid"
|
||||||
|
|||||||
@ -1,40 +0,0 @@
|
|||||||
// Code generated by sqlc. DO NOT EDIT.
|
|
||||||
// versions:
|
|
||||||
// sqlc v1.27.0
|
|
||||||
// source: user_queries.sql
|
|
||||||
|
|
||||||
package db_repo
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
)
|
|
||||||
|
|
||||||
const getAllUsers = `-- name: GetAllUsers :many
|
|
||||||
SELECT user_id, username, email, password, created_at FROM users
|
|
||||||
`
|
|
||||||
|
|
||||||
func (q *Queries) GetAllUsers(ctx context.Context) ([]User, error) {
|
|
||||||
rows, err := q.db.Query(ctx, getAllUsers)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
defer rows.Close()
|
|
||||||
var items []User
|
|
||||||
for rows.Next() {
|
|
||||||
var i User
|
|
||||||
if err := rows.Scan(
|
|
||||||
&i.UserID,
|
|
||||||
&i.Username,
|
|
||||||
&i.Email,
|
|
||||||
&i.Password,
|
|
||||||
&i.CreatedAt,
|
|
||||||
); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
items = append(items, i)
|
|
||||||
}
|
|
||||||
if err := rows.Err(); err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return items, nil
|
|
||||||
}
|
|
||||||
@ -2,7 +2,7 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
db_repo "enshi/db"
|
db_repo "enshi/db/go_queries"
|
||||||
"enshi/utils"
|
"enshi/utils"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
@ -34,6 +34,7 @@ func main() {
|
|||||||
defer tx.Rollback(context.Background())
|
defer tx.Rollback(context.Background())
|
||||||
|
|
||||||
repo := db_repo.New(tx)
|
repo := db_repo.New(tx)
|
||||||
|
|
||||||
users, _ := repo.GetAllUsers(context.Background())
|
users, _ := repo.GetAllUsers(context.Background())
|
||||||
|
|
||||||
for _, user := range users {
|
for _, user := range users {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user