sqlc: add all stub interface implement for core.DataService in sqlc feature

r/paopao-ce-pro
Michael Li 3 years ago
parent 74ce4e5b10
commit 41f3cedc8d
No known key found for this signature in database

@ -84,7 +84,7 @@ gen-grpc:
.PHONY: gen-sqlc
gen-sqlc:
@find internal/dao/slonik/ce/mysql internal/dao/slonik/ce/postgres internal/dao/slonik/ce/sqlite -name '*.go' -exec rm -f {} +
@find internal/dao/slonik/ce/postgres -name '*.go' -exec rm -f {} +
@go generate internal/dao/slonik/ce/ce.go
@go fmt ./internal/dao/slonik/ce/...

@ -333,6 +333,7 @@ release/paopao-ce --no-default-features --features sqlite3,localoss,loggerfile,r
|`Deprecated:Web` | 子服务 | 稳定 | 开启旧的Web服务|
|`Gorm` | 数据库 | 稳定(默认) | 使用[gorm](https://github.com/go-gorm/gorm)作为数据库的ORM默认使用 `Gorm` + `MySQL`组合|
|`Sqlx`| 数据库 | WIP | 使用[sqlx](https://github.com/jmoiron/sqlx)作为数据库的ORM|
|`Sqlc`| 数据库 | WIP | 使用[sqlc](https://github.com/kyleconroy/sqlc)自动生成ORM代码|
|`MySQL`| 数据库 | 稳定(默认) | 使用MySQL作为数据库|
|`Postgres`| 数据库 | 稳定 | 使用PostgreSQL作为数据库|
|`Sqlite3`| 数据库 | 稳定 | 使用Sqlite3作为数据库|

@ -47,13 +47,18 @@
* [x] 服务初始化逻辑
#### 数据库:
* `Gorm` + `MySQL`/`Sqlite3`/`PostgreSQL`
使用[gorm](https://github.com/go-gorm/gorm)作为数据库的ORM默认使用 `Grom` + `MySQL`组合(目前状态:稳定,默认,推荐使用)
* `Gorm` + `MySQL`/`Sqlite3`/`PostgreSQL`
使用[gorm](https://github.com/go-gorm/gorm)作为数据库的ORM默认使用 `Grom` + `MySQL`组合(目前状态:稳定,默认,推荐使用)
* [ ] 提按文档
* [x] 接口定义
* [x] 业务逻辑实现
* `Sqlx` + `MySQL`/`PostgreSQL`
使用[sqlx](https://github.com/jmoiron/sqlx)作为数据库的ORM(目前状态WIP)
* `Sqlx` + `MySQL`/`Sqlite3`/`PostgreSQL`
使用[sqlx](https://github.com/jmoiron/sqlx)作为数据库的ORM(目前状态WIP)
* [ ] 提按文档
* [ ] 接口定义
* [ ] 业务逻辑实现
* `Sqlc` + `PostgreSQL`
使用[sqlc](https://github.com/kyleconroy/sqlc)自动生成ORM代码(目前状态WIP)
* [ ] 提按文档
* [ ] 接口定义
* [ ] 业务逻辑实现

@ -0,0 +1,29 @@
// Copyright 2023 ROC. All rights reserved.
// Use of this source code is governed by a MIT style
// license that can be found in the LICENSE file.
package conf
import (
"context"
"sync"
"github.com/jackc/pgx/v5"
"github.com/sirupsen/logrus"
)
var (
_pgxDB *pgx.Conn
_oncePgx sync.Once
)
func MustPgxDB() *pgx.Conn {
_oncePgx.Do(func() {
conn, err := pgx.Connect(context.Background(), PostgresSetting.Dsn())
if err != nil {
logrus.Fatalf("pgx.Connect occurs error: %s", err)
}
_pgxDB = conn
})
return _pgxDB
}

@ -0,0 +1,58 @@
// Copyright 2023 ROC. All rights reserved.
// Use of this source code is governed by a MIT style
// license that can be found in the LICENSE file.
package slonik
import (
"github.com/jackc/pgx/v5"
"github.com/rocboss/paopao-ce/internal/core"
dbr "github.com/rocboss/paopao-ce/internal/dao/slonik/ce/postgres"
"github.com/rocboss/paopao-ce/pkg/debug"
)
var (
_ core.AuthorizationManageService = (*authorizationManageServant)(nil)
)
type authorizationManageServant struct {
db *pgx.Conn
q dbr.Querier
}
func (s *authorizationManageServant) IsAllow(user *core.User, action *core.Action) bool {
// TODO
debug.NotImplemented()
return false
}
func (s *authorizationManageServant) MyFriendSet(userId int64) core.FriendSet {
// TODO
debug.NotImplemented()
return nil
}
func (s *authorizationManageServant) BeFriendFilter(userId int64) core.FriendFilter {
// TODO
debug.NotImplemented()
return nil
}
func (s *authorizationManageServant) BeFriendIds(userId int64) ([]int64, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *authorizationManageServant) isFriend(userId int64, friendId int64) bool {
// TODO
debug.NotImplemented()
return false
}
func newAuthorizationManageService(db *pgx.Conn) core.AuthorizationManageService {
return &authorizationManageServant{
db: db,
q: dbr.New(db),
}
}

@ -1,3 +1,7 @@
// Copyright 2023 ROC. All rights reserved.
// Use of this source code is governed by a MIT style
// license that can be found in the LICENSE file.
package ce
//go:generate sqlc generate -x

@ -1,88 +0,0 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.16.0
// source: city.sql
package dbr
import (
"context"
)
const createCity = `-- name: CreateCity :exec
INSERT INTO city (
name,
slug
) VALUES (
?,
?
)
`
type CreateCityParams struct {
Name string
Slug string
}
func (q *Queries) CreateCity(ctx context.Context, arg CreateCityParams) error {
_, err := q.exec(ctx, q.createCityStmt, createCity, arg.Name, arg.Slug)
return err
}
const getCity = `-- name: GetCity :one
SELECT slug, name
FROM city
WHERE slug = ?
`
func (q *Queries) GetCity(ctx context.Context, slug string) (City, error) {
row := q.queryRow(ctx, q.getCityStmt, getCity, slug)
var i City
err := row.Scan(&i.Slug, &i.Name)
return i, err
}
const listCities = `-- name: ListCities :many
SELECT slug, name
FROM city
ORDER BY name
`
func (q *Queries) ListCities(ctx context.Context) ([]City, error) {
rows, err := q.query(ctx, q.listCitiesStmt, listCities)
if err != nil {
return nil, err
}
defer rows.Close()
var items []City
for rows.Next() {
var i City
if err := rows.Scan(&i.Slug, &i.Name); err != nil {
return nil, err
}
items = append(items, i)
}
if err := rows.Close(); err != nil {
return nil, err
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}
const updateCityName = `-- name: UpdateCityName :exec
UPDATE city
SET name = ?
WHERE slug = ?
`
type UpdateCityNameParams struct {
Name string
Slug string
}
func (q *Queries) UpdateCityName(ctx context.Context, arg UpdateCityNameParams) error {
_, err := q.exec(ctx, q.updateCityNameStmt, updateCityName, arg.Name, arg.Slug)
return err
}

@ -1,178 +0,0 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.16.0
package dbr
import (
"context"
"database/sql"
"fmt"
)
type DBTX interface {
ExecContext(context.Context, string, ...interface{}) (sql.Result, error)
PrepareContext(context.Context, string) (*sql.Stmt, error)
QueryContext(context.Context, string, ...interface{}) (*sql.Rows, error)
QueryRowContext(context.Context, string, ...interface{}) *sql.Row
}
func New(db DBTX) *Queries {
return &Queries{db: db}
}
func Prepare(ctx context.Context, db DBTX) (*Queries, error) {
q := Queries{db: db}
var err error
if q.createCityStmt, err = db.PrepareContext(ctx, createCity); err != nil {
return nil, fmt.Errorf("error preparing query CreateCity: %w", err)
}
if q.createVenueStmt, err = db.PrepareContext(ctx, createVenue); err != nil {
return nil, fmt.Errorf("error preparing query CreateVenue: %w", err)
}
if q.deleteVenueStmt, err = db.PrepareContext(ctx, deleteVenue); err != nil {
return nil, fmt.Errorf("error preparing query DeleteVenue: %w", err)
}
if q.getCityStmt, err = db.PrepareContext(ctx, getCity); err != nil {
return nil, fmt.Errorf("error preparing query GetCity: %w", err)
}
if q.getVenueStmt, err = db.PrepareContext(ctx, getVenue); err != nil {
return nil, fmt.Errorf("error preparing query GetVenue: %w", err)
}
if q.listCitiesStmt, err = db.PrepareContext(ctx, listCities); err != nil {
return nil, fmt.Errorf("error preparing query ListCities: %w", err)
}
if q.listVenuesStmt, err = db.PrepareContext(ctx, listVenues); err != nil {
return nil, fmt.Errorf("error preparing query ListVenues: %w", err)
}
if q.updateCityNameStmt, err = db.PrepareContext(ctx, updateCityName); err != nil {
return nil, fmt.Errorf("error preparing query UpdateCityName: %w", err)
}
if q.updateVenueNameStmt, err = db.PrepareContext(ctx, updateVenueName); err != nil {
return nil, fmt.Errorf("error preparing query UpdateVenueName: %w", err)
}
if q.venueCountByCityStmt, err = db.PrepareContext(ctx, venueCountByCity); err != nil {
return nil, fmt.Errorf("error preparing query VenueCountByCity: %w", err)
}
return &q, nil
}
func (q *Queries) Close() error {
var err error
if q.createCityStmt != nil {
if cerr := q.createCityStmt.Close(); cerr != nil {
err = fmt.Errorf("error closing createCityStmt: %w", cerr)
}
}
if q.createVenueStmt != nil {
if cerr := q.createVenueStmt.Close(); cerr != nil {
err = fmt.Errorf("error closing createVenueStmt: %w", cerr)
}
}
if q.deleteVenueStmt != nil {
if cerr := q.deleteVenueStmt.Close(); cerr != nil {
err = fmt.Errorf("error closing deleteVenueStmt: %w", cerr)
}
}
if q.getCityStmt != nil {
if cerr := q.getCityStmt.Close(); cerr != nil {
err = fmt.Errorf("error closing getCityStmt: %w", cerr)
}
}
if q.getVenueStmt != nil {
if cerr := q.getVenueStmt.Close(); cerr != nil {
err = fmt.Errorf("error closing getVenueStmt: %w", cerr)
}
}
if q.listCitiesStmt != nil {
if cerr := q.listCitiesStmt.Close(); cerr != nil {
err = fmt.Errorf("error closing listCitiesStmt: %w", cerr)
}
}
if q.listVenuesStmt != nil {
if cerr := q.listVenuesStmt.Close(); cerr != nil {
err = fmt.Errorf("error closing listVenuesStmt: %w", cerr)
}
}
if q.updateCityNameStmt != nil {
if cerr := q.updateCityNameStmt.Close(); cerr != nil {
err = fmt.Errorf("error closing updateCityNameStmt: %w", cerr)
}
}
if q.updateVenueNameStmt != nil {
if cerr := q.updateVenueNameStmt.Close(); cerr != nil {
err = fmt.Errorf("error closing updateVenueNameStmt: %w", cerr)
}
}
if q.venueCountByCityStmt != nil {
if cerr := q.venueCountByCityStmt.Close(); cerr != nil {
err = fmt.Errorf("error closing venueCountByCityStmt: %w", cerr)
}
}
return err
}
func (q *Queries) exec(ctx context.Context, stmt *sql.Stmt, query string, args ...interface{}) (sql.Result, error) {
switch {
case stmt != nil && q.tx != nil:
return q.tx.StmtContext(ctx, stmt).ExecContext(ctx, args...)
case stmt != nil:
return stmt.ExecContext(ctx, args...)
default:
return q.db.ExecContext(ctx, query, args...)
}
}
func (q *Queries) query(ctx context.Context, stmt *sql.Stmt, query string, args ...interface{}) (*sql.Rows, error) {
switch {
case stmt != nil && q.tx != nil:
return q.tx.StmtContext(ctx, stmt).QueryContext(ctx, args...)
case stmt != nil:
return stmt.QueryContext(ctx, args...)
default:
return q.db.QueryContext(ctx, query, args...)
}
}
func (q *Queries) queryRow(ctx context.Context, stmt *sql.Stmt, query string, args ...interface{}) *sql.Row {
switch {
case stmt != nil && q.tx != nil:
return q.tx.StmtContext(ctx, stmt).QueryRowContext(ctx, args...)
case stmt != nil:
return stmt.QueryRowContext(ctx, args...)
default:
return q.db.QueryRowContext(ctx, query, args...)
}
}
type Queries struct {
db DBTX
tx *sql.Tx
createCityStmt *sql.Stmt
createVenueStmt *sql.Stmt
deleteVenueStmt *sql.Stmt
getCityStmt *sql.Stmt
getVenueStmt *sql.Stmt
listCitiesStmt *sql.Stmt
listVenuesStmt *sql.Stmt
updateCityNameStmt *sql.Stmt
updateVenueNameStmt *sql.Stmt
venueCountByCityStmt *sql.Stmt
}
func (q *Queries) WithTx(tx *sql.Tx) *Queries {
return &Queries{
db: tx,
tx: tx,
createCityStmt: q.createCityStmt,
createVenueStmt: q.createVenueStmt,
deleteVenueStmt: q.deleteVenueStmt,
getCityStmt: q.getCityStmt,
getVenueStmt: q.getVenueStmt,
listCitiesStmt: q.listCitiesStmt,
listVenuesStmt: q.listVenuesStmt,
updateCityNameStmt: q.updateCityNameStmt,
updateVenueNameStmt: q.updateVenueNameStmt,
venueCountByCityStmt: q.venueCountByCityStmt,
}
}

@ -1,75 +0,0 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.16.0
package dbr
import (
"database/sql"
"database/sql/driver"
"fmt"
"time"
)
type VenuesStatus string
const (
VenuesStatusOpen VenuesStatus = "open"
VenuesStatusClosed VenuesStatus = "closed"
)
func (e *VenuesStatus) Scan(src interface{}) error {
switch s := src.(type) {
case []byte:
*e = VenuesStatus(s)
case string:
*e = VenuesStatus(s)
default:
return fmt.Errorf("unsupported scan type for VenuesStatus: %T", src)
}
return nil
}
type NullVenuesStatus struct {
VenuesStatus VenuesStatus
Valid bool // Valid is true if VenuesStatus is not NULL
}
// Scan implements the Scanner interface.
func (ns *NullVenuesStatus) Scan(value interface{}) error {
if value == nil {
ns.VenuesStatus, ns.Valid = "", false
return nil
}
ns.Valid = true
return ns.VenuesStatus.Scan(value)
}
// Value implements the driver Valuer interface.
func (ns NullVenuesStatus) Value() (driver.Value, error) {
if !ns.Valid {
return nil, nil
}
return string(ns.VenuesStatus), nil
}
type City struct {
Slug string
Name string
}
// Venues are places where muisc happens
type Venue struct {
ID int64
// Venues can be either open or closed
Status VenuesStatus
Statuses sql.NullString
// This value appears in public URLs
Slug string
Name string
City string
SpotifyPlaylist string
SongkickID sql.NullString
Tags sql.NullString
CreatedAt time.Time
}

@ -1,25 +0,0 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.16.0
package dbr
import (
"context"
"database/sql"
)
type Querier interface {
CreateCity(ctx context.Context, arg CreateCityParams) error
CreateVenue(ctx context.Context, arg CreateVenueParams) (sql.Result, error)
DeleteVenue(ctx context.Context, arg DeleteVenueParams) error
GetCity(ctx context.Context, slug string) (City, error)
GetVenue(ctx context.Context, arg GetVenueParams) (Venue, error)
ListCities(ctx context.Context) ([]City, error)
ListVenues(ctx context.Context, city string) ([]Venue, error)
UpdateCityName(ctx context.Context, arg UpdateCityNameParams) error
UpdateVenueName(ctx context.Context, arg UpdateVenueNameParams) error
VenueCountByCity(ctx context.Context) ([]VenueCountByCityRow, error)
}
var _ Querier = (*Queries)(nil)

@ -1,23 +0,0 @@
/* name: ListCities :many */
SELECT *
FROM city
ORDER BY name;
/* name: GetCity :one */
SELECT *
FROM city
WHERE slug = ?;
/* name: CreateCity :exec */
INSERT INTO city (
name,
slug
) VALUES (
?,
?
);
/* name: UpdateCityName :exec */
UPDATE city
SET name = ?
WHERE slug = ?;

@ -1,48 +0,0 @@
/* name: ListVenues :many */
SELECT *
FROM venue
WHERE city = ?
ORDER BY name;
/* name: DeleteVenue :exec */
DELETE FROM venue
WHERE slug = ? AND slug = ?;
/* name: GetVenue :one */
SELECT *
FROM venue
WHERE slug = ? AND city = ?;
/* name: CreateVenue :execresult */
INSERT INTO venue (
slug,
name,
city,
created_at,
spotify_playlist,
status,
statuses,
tags
) VALUES (
?,
?,
?,
NOW(),
?,
?,
?,
?
);
/* name: UpdateVenueName :exec */
UPDATE venue
SET name = ?
WHERE slug = ?;
/* name: VenueCountByCity :many */
SELECT
city,
count(*)
FROM venue
GROUP BY 1
ORDER BY 1;

@ -1,4 +0,0 @@
CREATE TABLE city (
slug varchar(255) PRIMARY KEY,
name text NOT NULL
)

@ -1,12 +0,0 @@
CREATE TABLE venues (
id SERIAL primary key,
dropped text,
status ENUM('open', 'closed') not null COMMENT 'Venues can be either open or closed',
statuses text, -- status[],
slug text not null COMMENT 'This value appears in public URLs',
name varchar(255) not null,
city text not null references city(slug),
spotify_playlist varchar(255) not null,
songkick_id text,
tags text -- text[]
) COMMENT='Venues are places where muisc happens';

@ -1,3 +0,0 @@
ALTER TABLE venues RENAME TO venue;
ALTER TABLE venue ADD COLUMN created_at TIMESTAMP NOT NULL DEFAULT NOW();
ALTER TABLE venue DROP COLUMN dropped;

@ -1,193 +0,0 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.16.0
// source: venue.sql
package dbr
import (
"context"
"database/sql"
)
const createVenue = `-- name: CreateVenue :execresult
INSERT INTO venue (
slug,
name,
city,
created_at,
spotify_playlist,
status,
statuses,
tags
) VALUES (
?,
?,
?,
NOW(),
?,
?,
?,
?
)
`
type CreateVenueParams struct {
Slug string
Name string
City string
SpotifyPlaylist string
Status VenuesStatus
Statuses sql.NullString
Tags sql.NullString
}
func (q *Queries) CreateVenue(ctx context.Context, arg CreateVenueParams) (sql.Result, error) {
return q.exec(ctx, q.createVenueStmt, createVenue,
arg.Slug,
arg.Name,
arg.City,
arg.SpotifyPlaylist,
arg.Status,
arg.Statuses,
arg.Tags,
)
}
const deleteVenue = `-- name: DeleteVenue :exec
DELETE FROM venue
WHERE slug = ? AND slug = ?
`
type DeleteVenueParams struct {
Slug string
Slug_2 string
}
func (q *Queries) DeleteVenue(ctx context.Context, arg DeleteVenueParams) error {
_, err := q.exec(ctx, q.deleteVenueStmt, deleteVenue, arg.Slug, arg.Slug_2)
return err
}
const getVenue = `-- name: GetVenue :one
SELECT id, status, statuses, slug, name, city, spotify_playlist, songkick_id, tags, created_at
FROM venue
WHERE slug = ? AND city = ?
`
type GetVenueParams struct {
Slug string
City string
}
func (q *Queries) GetVenue(ctx context.Context, arg GetVenueParams) (Venue, error) {
row := q.queryRow(ctx, q.getVenueStmt, getVenue, arg.Slug, arg.City)
var i Venue
err := row.Scan(
&i.ID,
&i.Status,
&i.Statuses,
&i.Slug,
&i.Name,
&i.City,
&i.SpotifyPlaylist,
&i.SongkickID,
&i.Tags,
&i.CreatedAt,
)
return i, err
}
const listVenues = `-- name: ListVenues :many
SELECT id, status, statuses, slug, name, city, spotify_playlist, songkick_id, tags, created_at
FROM venue
WHERE city = ?
ORDER BY name
`
func (q *Queries) ListVenues(ctx context.Context, city string) ([]Venue, error) {
rows, err := q.query(ctx, q.listVenuesStmt, listVenues, city)
if err != nil {
return nil, err
}
defer rows.Close()
var items []Venue
for rows.Next() {
var i Venue
if err := rows.Scan(
&i.ID,
&i.Status,
&i.Statuses,
&i.Slug,
&i.Name,
&i.City,
&i.SpotifyPlaylist,
&i.SongkickID,
&i.Tags,
&i.CreatedAt,
); err != nil {
return nil, err
}
items = append(items, i)
}
if err := rows.Close(); err != nil {
return nil, err
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}
const updateVenueName = `-- name: UpdateVenueName :exec
UPDATE venue
SET name = ?
WHERE slug = ?
`
type UpdateVenueNameParams struct {
Name string
Slug string
}
func (q *Queries) UpdateVenueName(ctx context.Context, arg UpdateVenueNameParams) error {
_, err := q.exec(ctx, q.updateVenueNameStmt, updateVenueName, arg.Name, arg.Slug)
return err
}
const venueCountByCity = `-- name: VenueCountByCity :many
SELECT
city,
count(*)
FROM venue
GROUP BY 1
ORDER BY 1
`
type VenueCountByCityRow struct {
City string
Count int64
}
func (q *Queries) VenueCountByCity(ctx context.Context) ([]VenueCountByCityRow, error) {
rows, err := q.query(ctx, q.venueCountByCityStmt, venueCountByCity)
if err != nil {
return nil, err
}
defer rows.Close()
var items []VenueCountByCityRow
for rows.Next() {
var i VenueCountByCityRow
if err := rows.Scan(&i.City, &i.Count); err != nil {
return nil, err
}
items = append(items, i)
}
if err := rows.Close(); err != nil {
return nil, err
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}

@ -10,21 +10,3 @@ sql:
sql_package: 'pgx/v5'
emit_prepared_queries: true
emit_interface: true
- schema: mysql/schema
queries: mysql/query
engine: mysql
gen:
go:
package: dbr
out: mysql
emit_prepared_queries: true
emit_interface: true
- schema: sqlite/schema
queries: sqlite/query
engine: sqlite
gen:
go:
package: dbr
out: sqlite
emit_prepared_queries: true
emit_interface: true

@ -1,88 +0,0 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.16.0
// source: city.sql
package dbr
import (
"context"
)
const createCity = `-- name: CreateCity :exec
INSERT INTO city (
name,
slug
) VALUES (
?,
?
)
`
type CreateCityParams struct {
Name string
Slug string
}
func (q *Queries) CreateCity(ctx context.Context, arg CreateCityParams) error {
_, err := q.exec(ctx, q.createCityStmt, createCity, arg.Name, arg.Slug)
return err
}
const getCity = `-- name: GetCity :one
SELECT slug, name
FROM city
WHERE slug = ?
`
func (q *Queries) GetCity(ctx context.Context, slug string) (City, error) {
row := q.queryRow(ctx, q.getCityStmt, getCity, slug)
var i City
err := row.Scan(&i.Slug, &i.Name)
return i, err
}
const listCities = `-- name: ListCities :many
SELECT slug, name
FROM city
ORDER BY name
`
func (q *Queries) ListCities(ctx context.Context) ([]City, error) {
rows, err := q.query(ctx, q.listCitiesStmt, listCities)
if err != nil {
return nil, err
}
defer rows.Close()
var items []City
for rows.Next() {
var i City
if err := rows.Scan(&i.Slug, &i.Name); err != nil {
return nil, err
}
items = append(items, i)
}
if err := rows.Close(); err != nil {
return nil, err
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}
const updateCityName = `-- name: UpdateCityName :exec
UPDATE city
SET name = ?
WHERE slug = ?
`
type UpdateCityNameParams struct {
Name string
Slug string
}
func (q *Queries) UpdateCityName(ctx context.Context, arg UpdateCityNameParams) error {
_, err := q.exec(ctx, q.updateCityNameStmt, updateCityName, arg.Name, arg.Slug)
return err
}

@ -1,178 +0,0 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.16.0
package dbr
import (
"context"
"database/sql"
"fmt"
)
type DBTX interface {
ExecContext(context.Context, string, ...interface{}) (sql.Result, error)
PrepareContext(context.Context, string) (*sql.Stmt, error)
QueryContext(context.Context, string, ...interface{}) (*sql.Rows, error)
QueryRowContext(context.Context, string, ...interface{}) *sql.Row
}
func New(db DBTX) *Queries {
return &Queries{db: db}
}
func Prepare(ctx context.Context, db DBTX) (*Queries, error) {
q := Queries{db: db}
var err error
if q.createCityStmt, err = db.PrepareContext(ctx, createCity); err != nil {
return nil, fmt.Errorf("error preparing query CreateCity: %w", err)
}
if q.createVenueStmt, err = db.PrepareContext(ctx, createVenue); err != nil {
return nil, fmt.Errorf("error preparing query CreateVenue: %w", err)
}
if q.deleteVenueStmt, err = db.PrepareContext(ctx, deleteVenue); err != nil {
return nil, fmt.Errorf("error preparing query DeleteVenue: %w", err)
}
if q.getCityStmt, err = db.PrepareContext(ctx, getCity); err != nil {
return nil, fmt.Errorf("error preparing query GetCity: %w", err)
}
if q.getVenueStmt, err = db.PrepareContext(ctx, getVenue); err != nil {
return nil, fmt.Errorf("error preparing query GetVenue: %w", err)
}
if q.listCitiesStmt, err = db.PrepareContext(ctx, listCities); err != nil {
return nil, fmt.Errorf("error preparing query ListCities: %w", err)
}
if q.listVenuesStmt, err = db.PrepareContext(ctx, listVenues); err != nil {
return nil, fmt.Errorf("error preparing query ListVenues: %w", err)
}
if q.updateCityNameStmt, err = db.PrepareContext(ctx, updateCityName); err != nil {
return nil, fmt.Errorf("error preparing query UpdateCityName: %w", err)
}
if q.updateVenueNameStmt, err = db.PrepareContext(ctx, updateVenueName); err != nil {
return nil, fmt.Errorf("error preparing query UpdateVenueName: %w", err)
}
if q.venueCountByCityStmt, err = db.PrepareContext(ctx, venueCountByCity); err != nil {
return nil, fmt.Errorf("error preparing query VenueCountByCity: %w", err)
}
return &q, nil
}
func (q *Queries) Close() error {
var err error
if q.createCityStmt != nil {
if cerr := q.createCityStmt.Close(); cerr != nil {
err = fmt.Errorf("error closing createCityStmt: %w", cerr)
}
}
if q.createVenueStmt != nil {
if cerr := q.createVenueStmt.Close(); cerr != nil {
err = fmt.Errorf("error closing createVenueStmt: %w", cerr)
}
}
if q.deleteVenueStmt != nil {
if cerr := q.deleteVenueStmt.Close(); cerr != nil {
err = fmt.Errorf("error closing deleteVenueStmt: %w", cerr)
}
}
if q.getCityStmt != nil {
if cerr := q.getCityStmt.Close(); cerr != nil {
err = fmt.Errorf("error closing getCityStmt: %w", cerr)
}
}
if q.getVenueStmt != nil {
if cerr := q.getVenueStmt.Close(); cerr != nil {
err = fmt.Errorf("error closing getVenueStmt: %w", cerr)
}
}
if q.listCitiesStmt != nil {
if cerr := q.listCitiesStmt.Close(); cerr != nil {
err = fmt.Errorf("error closing listCitiesStmt: %w", cerr)
}
}
if q.listVenuesStmt != nil {
if cerr := q.listVenuesStmt.Close(); cerr != nil {
err = fmt.Errorf("error closing listVenuesStmt: %w", cerr)
}
}
if q.updateCityNameStmt != nil {
if cerr := q.updateCityNameStmt.Close(); cerr != nil {
err = fmt.Errorf("error closing updateCityNameStmt: %w", cerr)
}
}
if q.updateVenueNameStmt != nil {
if cerr := q.updateVenueNameStmt.Close(); cerr != nil {
err = fmt.Errorf("error closing updateVenueNameStmt: %w", cerr)
}
}
if q.venueCountByCityStmt != nil {
if cerr := q.venueCountByCityStmt.Close(); cerr != nil {
err = fmt.Errorf("error closing venueCountByCityStmt: %w", cerr)
}
}
return err
}
func (q *Queries) exec(ctx context.Context, stmt *sql.Stmt, query string, args ...interface{}) (sql.Result, error) {
switch {
case stmt != nil && q.tx != nil:
return q.tx.StmtContext(ctx, stmt).ExecContext(ctx, args...)
case stmt != nil:
return stmt.ExecContext(ctx, args...)
default:
return q.db.ExecContext(ctx, query, args...)
}
}
func (q *Queries) query(ctx context.Context, stmt *sql.Stmt, query string, args ...interface{}) (*sql.Rows, error) {
switch {
case stmt != nil && q.tx != nil:
return q.tx.StmtContext(ctx, stmt).QueryContext(ctx, args...)
case stmt != nil:
return stmt.QueryContext(ctx, args...)
default:
return q.db.QueryContext(ctx, query, args...)
}
}
func (q *Queries) queryRow(ctx context.Context, stmt *sql.Stmt, query string, args ...interface{}) *sql.Row {
switch {
case stmt != nil && q.tx != nil:
return q.tx.StmtContext(ctx, stmt).QueryRowContext(ctx, args...)
case stmt != nil:
return stmt.QueryRowContext(ctx, args...)
default:
return q.db.QueryRowContext(ctx, query, args...)
}
}
type Queries struct {
db DBTX
tx *sql.Tx
createCityStmt *sql.Stmt
createVenueStmt *sql.Stmt
deleteVenueStmt *sql.Stmt
getCityStmt *sql.Stmt
getVenueStmt *sql.Stmt
listCitiesStmt *sql.Stmt
listVenuesStmt *sql.Stmt
updateCityNameStmt *sql.Stmt
updateVenueNameStmt *sql.Stmt
venueCountByCityStmt *sql.Stmt
}
func (q *Queries) WithTx(tx *sql.Tx) *Queries {
return &Queries{
db: tx,
tx: tx,
createCityStmt: q.createCityStmt,
createVenueStmt: q.createVenueStmt,
deleteVenueStmt: q.deleteVenueStmt,
getCityStmt: q.getCityStmt,
getVenueStmt: q.getVenueStmt,
listCitiesStmt: q.listCitiesStmt,
listVenuesStmt: q.listVenuesStmt,
updateCityNameStmt: q.updateCityNameStmt,
updateVenueNameStmt: q.updateVenueNameStmt,
venueCountByCityStmt: q.venueCountByCityStmt,
}
}

@ -1,28 +0,0 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.16.0
package dbr
import (
"database/sql"
"time"
)
type City struct {
Slug string
Name string
}
type Venue struct {
ID int64
Status string
Statuses sql.NullString
Slug string
Name string
City string
SpotifyPlaylist string
SongkickID sql.NullString
Tags sql.NullString
CreatedAt time.Time
}

@ -1,25 +0,0 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.16.0
package dbr
import (
"context"
"database/sql"
)
type Querier interface {
CreateCity(ctx context.Context, arg CreateCityParams) error
CreateVenue(ctx context.Context, arg CreateVenueParams) (sql.Result, error)
DeleteVenue(ctx context.Context, arg DeleteVenueParams) error
GetCity(ctx context.Context, slug string) (City, error)
GetVenue(ctx context.Context, arg GetVenueParams) (Venue, error)
ListCities(ctx context.Context) ([]City, error)
ListVenues(ctx context.Context, city string) ([]Venue, error)
UpdateCityName(ctx context.Context, arg UpdateCityNameParams) error
UpdateVenueName(ctx context.Context, arg UpdateVenueNameParams) error
VenueCountByCity(ctx context.Context) ([]VenueCountByCityRow, error)
}
var _ Querier = (*Queries)(nil)

@ -1,23 +0,0 @@
/* name: ListCities :many */
SELECT *
FROM city
ORDER BY name;
/* name: GetCity :one */
SELECT *
FROM city
WHERE slug = ?;
/* name: CreateCity :exec */
INSERT INTO city (
name,
slug
) VALUES (
?,
?
);
/* name: UpdateCityName :exec */
UPDATE city
SET name = ?
WHERE slug = ?;

@ -1,48 +0,0 @@
/* name: ListVenues :many */
SELECT *
FROM venue
WHERE city = ?
ORDER BY name;
/* name: DeleteVenue :exec */
DELETE FROM venue
WHERE slug = ? AND slug = ?;
/* name: GetVenue :one */
SELECT *
FROM venue
WHERE slug = ? AND city = ?;
/* name: CreateVenue :execresult */
INSERT INTO venue (
slug,
name,
city,
created_at,
spotify_playlist,
status,
statuses,
tags
) VALUES (
?,
?,
?,
CURRENT_TIMESTAMP,
?,
?,
?,
?
);
/* name: UpdateVenueName :exec */
UPDATE venue
SET name = ?
WHERE slug = ?;
/* name: VenueCountByCity :many */
SELECT
city,
count(*)
FROM venue
GROUP BY 1
ORDER BY 1;

@ -1,4 +0,0 @@
CREATE TABLE city (
slug varchar(255) PRIMARY KEY,
name text NOT NULL
)

@ -1,13 +0,0 @@
CREATE TABLE venues (
id integer primary key AUTOINCREMENT,
dropped text,
status text not null,
statuses text, -- status[]
slug text not null,
name varchar(255) not null,
city text not null references city(slug),
spotify_playlist varchar(255) not null,
songkick_id text,
tags text, -- tags[]
CHECK (status = 'open' OR status = 'closed')
);

@ -1,3 +0,0 @@
ALTER TABLE venues RENAME TO venue;
ALTER TABLE venue ADD COLUMN created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP;
ALTER TABLE venue DROP COLUMN dropped;

@ -1,193 +0,0 @@
// Code generated by sqlc. DO NOT EDIT.
// versions:
// sqlc v1.16.0
// source: venue.sql
package dbr
import (
"context"
"database/sql"
)
const createVenue = `-- name: CreateVenue :execresult
INSERT INTO venue (
slug,
name,
city,
created_at,
spotify_playlist,
status,
statuses,
tags
) VALUES (
?,
?,
?,
CURRENT_TIMESTAMP,
?,
?,
?,
?
)
`
type CreateVenueParams struct {
Slug string
Name string
City string
SpotifyPlaylist string
Status string
Statuses sql.NullString
Tags sql.NullString
}
func (q *Queries) CreateVenue(ctx context.Context, arg CreateVenueParams) (sql.Result, error) {
return q.exec(ctx, q.createVenueStmt, createVenue,
arg.Slug,
arg.Name,
arg.City,
arg.SpotifyPlaylist,
arg.Status,
arg.Statuses,
arg.Tags,
)
}
const deleteVenue = `-- name: DeleteVenue :exec
DELETE FROM venue
WHERE slug = ? AND slug = ?
`
type DeleteVenueParams struct {
Slug string
Slug_2 string
}
func (q *Queries) DeleteVenue(ctx context.Context, arg DeleteVenueParams) error {
_, err := q.exec(ctx, q.deleteVenueStmt, deleteVenue, arg.Slug, arg.Slug_2)
return err
}
const getVenue = `-- name: GetVenue :one
SELECT id, status, statuses, slug, name, city, spotify_playlist, songkick_id, tags, created_at
FROM venue
WHERE slug = ? AND city = ?
`
type GetVenueParams struct {
Slug string
City string
}
func (q *Queries) GetVenue(ctx context.Context, arg GetVenueParams) (Venue, error) {
row := q.queryRow(ctx, q.getVenueStmt, getVenue, arg.Slug, arg.City)
var i Venue
err := row.Scan(
&i.ID,
&i.Status,
&i.Statuses,
&i.Slug,
&i.Name,
&i.City,
&i.SpotifyPlaylist,
&i.SongkickID,
&i.Tags,
&i.CreatedAt,
)
return i, err
}
const listVenues = `-- name: ListVenues :many
SELECT id, status, statuses, slug, name, city, spotify_playlist, songkick_id, tags, created_at
FROM venue
WHERE city = ?
ORDER BY name
`
func (q *Queries) ListVenues(ctx context.Context, city string) ([]Venue, error) {
rows, err := q.query(ctx, q.listVenuesStmt, listVenues, city)
if err != nil {
return nil, err
}
defer rows.Close()
var items []Venue
for rows.Next() {
var i Venue
if err := rows.Scan(
&i.ID,
&i.Status,
&i.Statuses,
&i.Slug,
&i.Name,
&i.City,
&i.SpotifyPlaylist,
&i.SongkickID,
&i.Tags,
&i.CreatedAt,
); err != nil {
return nil, err
}
items = append(items, i)
}
if err := rows.Close(); err != nil {
return nil, err
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}
const updateVenueName = `-- name: UpdateVenueName :exec
UPDATE venue
SET name = ?
WHERE slug = ?
`
type UpdateVenueNameParams struct {
Name string
Slug string
}
func (q *Queries) UpdateVenueName(ctx context.Context, arg UpdateVenueNameParams) error {
_, err := q.exec(ctx, q.updateVenueNameStmt, updateVenueName, arg.Name, arg.Slug)
return err
}
const venueCountByCity = `-- name: VenueCountByCity :many
SELECT
city,
count(*)
FROM venue
GROUP BY 1
ORDER BY 1
`
type VenueCountByCityRow struct {
City string
Count int64
}
func (q *Queries) VenueCountByCity(ctx context.Context) ([]VenueCountByCityRow, error) {
rows, err := q.query(ctx, q.venueCountByCityStmt, venueCountByCity)
if err != nil {
return nil, err
}
defer rows.Close()
var items []VenueCountByCityRow
for rows.Next() {
var i VenueCountByCityRow
if err := rows.Scan(&i.City, &i.Count); err != nil {
return nil, err
}
items = append(items, i)
}
if err := rows.Close(); err != nil {
return nil, err
}
if err := rows.Err(); err != nil {
return nil, err
}
return items, nil
}

@ -0,0 +1,107 @@
// Copyright 2023 ROC. All rights reserved.
// Use of this source code is governed by a MIT style
// license that can be found in the LICENSE file.
package slonik
import (
"github.com/jackc/pgx/v5"
"github.com/rocboss/paopao-ce/internal/core"
dbr "github.com/rocboss/paopao-ce/internal/dao/slonik/ce/postgres"
"github.com/rocboss/paopao-ce/pkg/debug"
)
var (
_ core.CommentService = (*commentServant)(nil)
_ core.CommentManageService = (*commentManageServant)(nil)
)
type commentServant struct {
db *pgx.Conn
q dbr.Querier
}
type commentManageServant struct {
db *pgx.Conn
q dbr.Querier
}
func (s *commentServant) GetComments(conditions *core.ConditionsT, offset, limit int) ([]*core.Comment, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *commentServant) GetCommentByID(id int64) (*core.Comment, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *commentServant) GetCommentReplyByID(id int64) (*core.CommentReply, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *commentServant) GetCommentCount(conditions *core.ConditionsT) (int64, error) {
// TODO
debug.NotImplemented()
return 0, nil
}
func (s *commentServant) GetCommentContentsByIDs(ids []int64) ([]*core.CommentContent, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *commentServant) GetCommentRepliesByID(ids []int64) ([]*core.CommentReplyFormated, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *commentManageServant) DeleteComment(comment *core.Comment) error {
// TODO
debug.NotImplemented()
return nil
}
func (s *commentManageServant) CreateComment(comment *core.Comment) (*core.Comment, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *commentManageServant) CreateCommentReply(reply *core.CommentReply) (*core.CommentReply, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *commentManageServant) DeleteCommentReply(reply *core.CommentReply) error {
// TODO
debug.NotImplemented()
return nil
}
func (s *commentManageServant) CreateCommentContent(content *core.CommentContent) (*core.CommentContent, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func newCommentService(db *pgx.Conn) core.CommentService {
return &commentServant{
db: db,
q: dbr.New(db),
}
}
func newCommentManageService(db *pgx.Conn) core.CommentManageService {
return &commentManageServant{
db: db,
q: dbr.New(db),
}
}

@ -0,0 +1,64 @@
// Copyright 2023 ROC. All rights reserved.
// Use of this source code is governed by a MIT style
// license that can be found in the LICENSE file.
package slonik
import (
"github.com/jackc/pgx/v5"
"github.com/rocboss/paopao-ce/internal/core"
dbr "github.com/rocboss/paopao-ce/internal/dao/slonik/ce/postgres"
"github.com/rocboss/paopao-ce/pkg/debug"
)
var (
_ core.ContactManageService = (*contactManageServant)(nil)
)
type contactManageServant struct {
db *pgx.Conn
q dbr.Querier
}
func (s *contactManageServant) RequestingFriend(userId int64, friendId int64, greetings string) (err error) {
// TODO
debug.NotImplemented()
return nil
}
func (s *contactManageServant) AddFriend(userId int64, friendId int64) (err error) {
// TODO
debug.NotImplemented()
return nil
}
func (s *contactManageServant) RejectFriend(userId int64, friendId int64) (err error) {
// TODO
debug.NotImplemented()
return nil
}
func (s *contactManageServant) DeleteFriend(userId int64, friendId int64) (err error) {
// TODO
debug.NotImplemented()
return nil
}
func (s *contactManageServant) GetContacts(userId int64, offset int, limit int) (*core.ContactList, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *contactManageServant) IsFriend(userId int64, friendId int64) bool {
// TODO
debug.NotImplemented()
return false
}
func newContactManageService(db *pgx.Conn) core.ContactManageService {
return &contactManageServant{
db: db,
q: dbr.New(db),
}
}

@ -0,0 +1,55 @@
// Copyright 2023 ROC. All rights reserved.
// Use of this source code is governed by a MIT style
// license that can be found in the LICENSE file.
package slonik
import (
"github.com/jackc/pgx/v5"
"github.com/rocboss/paopao-ce/internal/core"
dbr "github.com/rocboss/paopao-ce/internal/dao/slonik/ce/postgres"
"github.com/rocboss/paopao-ce/pkg/debug"
)
var (
_ core.IndexPostsService = (*indexPostsServant)(nil)
_ core.IndexPostsService = (*simpleIndexPostsServant)(nil)
)
type indexPostsServant struct {
db *pgx.Conn
q dbr.Querier
}
type simpleIndexPostsServant struct {
db *pgx.Conn
q dbr.Querier
}
// IndexPosts 根据userId查询广场推文列表简单做到不同用户的主页都是不同的
func (s *indexPostsServant) IndexPosts(user *core.User, offset int, limit int) (*core.IndexTweetList, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
// simpleCacheIndexGetPosts simpleCacheIndex 专属获取广场推文列表函数
func (s *simpleIndexPostsServant) IndexPosts(_user *core.User, offset int, limit int) (*core.IndexTweetList, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func newIndexPostsService(db *pgx.Conn) core.IndexPostsService {
return &indexPostsServant{
db: db,
q: dbr.New(db),
}
}
func newSimpleIndexPostsService(db *pgx.Conn) core.IndexPostsService {
return &simpleIndexPostsServant{
db: db,
q: dbr.New(db),
}
}

@ -0,0 +1,64 @@
// Copyright 2023 ROC. All rights reserved.
// Use of this source code is governed by a MIT style
// license that can be found in the LICENSE file.
package slonik
import (
"github.com/jackc/pgx/v5"
"github.com/rocboss/paopao-ce/internal/core"
dbr "github.com/rocboss/paopao-ce/internal/dao/slonik/ce/postgres"
"github.com/rocboss/paopao-ce/pkg/debug"
)
var (
_ core.MessageService = (*messageServant)(nil)
)
type messageServant struct {
db *pgx.Conn
q dbr.Querier
}
func (s *messageServant) CreateMessage(msg *core.Message) (*core.Message, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *messageServant) GetUnreadCount(userID int64) (int64, error) {
// TODO
debug.NotImplemented()
return 0, nil
}
func (s *messageServant) GetMessageByID(id int64) (*core.Message, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *messageServant) ReadMessage(message *core.Message) error {
// TODO
debug.NotImplemented()
return nil
}
func (s *messageServant) GetMessages(conditions *core.ConditionsT, offset, limit int) ([]*core.MessageFormated, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *messageServant) GetMessageCount(conditions *core.ConditionsT) (int64, error) {
// TODO
debug.NotImplemented()
return 0, nil
}
func newMessageService(db *pgx.Conn) core.MessageService {
return &messageServant{
db: db,
q: dbr.New(db),
}
}

@ -0,0 +1,24 @@
// Copyright 2023 ROC. All rights reserved.
// Use of this source code is governed by a MIT style
// license that can be found in the LICENSE file.
package slonik
import (
"sync"
"github.com/jackc/pgx/v5"
"github.com/rocboss/paopao-ce/internal/conf"
)
var (
_pgxDB *pgx.Conn
_oncePgx sync.Once
)
func pgxDB() *pgx.Conn {
_oncePgx.Do(func() {
_pgxDB = conf.MustPgxDB()
})
return _pgxDB
}

@ -0,0 +1,49 @@
// Copyright 2023 ROC. All rights reserved.
// Use of this source code is governed by a MIT style
// license that can be found in the LICENSE file.
package slonik
import (
"github.com/jackc/pgx/v5"
"github.com/rocboss/paopao-ce/internal/core"
dbr "github.com/rocboss/paopao-ce/internal/dao/slonik/ce/postgres"
"github.com/rocboss/paopao-ce/pkg/debug"
)
var (
_ core.SecurityService = (*securityServant)(nil)
)
type securityServant struct {
db *pgx.Conn
q dbr.Querier
}
// GetLatestPhoneCaptcha 获取最新短信验证码
func (s *securityServant) GetLatestPhoneCaptcha(phone string) (*core.Captcha, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
// UsePhoneCaptcha 更新短信验证码
func (s *securityServant) UsePhoneCaptcha(captcha *core.Captcha) error {
// TODO
debug.NotImplemented()
return nil
}
// SendPhoneCaptcha 发送短信验证码
func (s *securityServant) SendPhoneCaptcha(phone string) error {
// TODO
debug.NotImplemented()
return nil
}
func newSecurityService(db *pgx.Conn, phoneVerify core.PhoneVerifyService) core.SecurityService {
return &securityServant{
db: db,
q: dbr.New(db),
}
}

@ -1,23 +1,86 @@
// Copyright 2022 ROC. All rights reserved.
// Copyright 2023 ROC. All rights reserved.
// Use of this source code is governed by a MIT style
// license that can be found in the LICENSE file.
// Core service implement base sqlx+postgresql. All sub-service
// will declare here and provide initial function.
package slonik
import (
"github.com/Masterminds/semver/v3"
"github.com/alimy/cfg"
"github.com/rocboss/paopao-ce/internal/core"
"github.com/rocboss/paopao-ce/internal/dao/cache"
"github.com/rocboss/paopao-ce/internal/dao/security"
"github.com/sirupsen/logrus"
)
var (
_ core.DataService = (*dataServant)(nil)
_ core.VersionInfo = (*dataServant)(nil)
)
type dataServant struct {
core.IndexPostsService
core.WalletService
core.MessageService
core.TopicService
core.TweetService
core.TweetManageService
core.TweetHelpService
core.CommentService
core.CommentManageService
core.UserManageService
core.ContactManageService
core.SecurityService
core.AttachmentCheckService
}
func NewDataService() (core.DataService, core.VersionInfo) {
logrus.Fatal("not support now")
return nil, nil
// initialize CacheIndex if needed
var (
c core.CacheIndexService
v core.VersionInfo
)
db := pgxDB()
pvs := security.NewPhoneVerifyService()
i := newIndexPostsService(db)
if cfg.If("SimpleCacheIndex") {
i = newSimpleIndexPostsService(db)
c, v = cache.NewSimpleCacheIndexService(i)
} else if cfg.If("BigCacheIndex") {
a := newAuthorizationManageService(db)
c, v = cache.NewBigCacheIndexService(i, a)
} else {
c, v = cache.NewNoneCacheIndexService(i)
}
logrus.Infof("use %s as cache index service by version: %s", v.Name(), v.Version())
ds := &dataServant{
IndexPostsService: c,
WalletService: newWalletService(db),
MessageService: newMessageService(db),
TopicService: newTopicService(db),
TweetService: newTweetService(db),
TweetManageService: newTweetManageService(db, c),
TweetHelpService: newTweetHelpService(db),
CommentService: newCommentService(db),
CommentManageService: newCommentManageService(db),
UserManageService: newUserManageService(db),
ContactManageService: newContactManageService(db),
SecurityService: newSecurityService(db, pvs),
AttachmentCheckService: security.NewAttachmentCheckService(),
}
return ds, ds
}
func NewAuthorizationManageService() core.AuthorizationManageService {
logrus.Fatal("not support now")
return nil
return newAuthorizationManageService(pgxDB())
}
func (s *dataServant) Name() string {
return "sqlc/pgx"
}
func (s *dataServant) Version() *semver.Version {
return semver.MustParse("v0.1.0")
}

@ -0,0 +1,52 @@
// Copyright 2023 ROC. All rights reserved.
// Use of this source code is governed by a MIT style
// license that can be found in the LICENSE file.
package slonik
import (
"github.com/jackc/pgx/v5"
"github.com/rocboss/paopao-ce/internal/core"
dbr "github.com/rocboss/paopao-ce/internal/dao/slonik/ce/postgres"
"github.com/rocboss/paopao-ce/pkg/debug"
)
var (
_ core.TopicService = (*topicServant)(nil)
)
type topicServant struct {
db *pgx.Conn
q dbr.Querier
}
func (s *topicServant) CreateTag(tag *core.Tag) (*core.Tag, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *topicServant) DeleteTag(tag *core.Tag) error {
// TODO
debug.NotImplemented()
return nil
}
func (s *topicServant) GetTags(conditions *core.ConditionsT, offset, limit int) ([]*core.Tag, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *topicServant) GetTagsByKeyword(keyword string) ([]*core.Tag, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func newTopicService(db *pgx.Conn) core.TopicService {
return &topicServant{
db: db,
q: dbr.New(db),
}
}

@ -0,0 +1,243 @@
// Copyright 2023 ROC. All rights reserved.
// Use of this source code is governed by a MIT style
// license that can be found in the LICENSE file.
package slonik
import (
"github.com/jackc/pgx/v5"
"github.com/rocboss/paopao-ce/internal/core"
dbr "github.com/rocboss/paopao-ce/internal/dao/slonik/ce/postgres"
"github.com/rocboss/paopao-ce/pkg/debug"
"gorm.io/gorm"
)
var (
_ core.TweetService = (*tweetServant)(nil)
_ core.TweetManageService = (*tweetManageServant)(nil)
_ core.TweetHelpService = (*tweetHelpServant)(nil)
)
type tweetServant struct {
db *pgx.Conn
q dbr.Querier
}
type tweetManageServant struct {
db *pgx.Conn
q dbr.Querier
}
type tweetHelpServant struct {
db *pgx.Conn
q dbr.Querier
}
// MergePosts post数据整合
func (s *tweetHelpServant) MergePosts(posts []*core.Post) ([]*core.PostFormated, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
// RevampPosts post数据整形修复
func (s *tweetHelpServant) RevampPosts(posts []*core.PostFormated) ([]*core.PostFormated, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *tweetHelpServant) getPostContentsByIDs(ids []int64) ([]*core.PostContent, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *tweetHelpServant) getUsersByIDs(ids []int64) ([]*core.User, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *tweetManageServant) CreatePostCollection(postID, userID int64) (*core.PostCollection, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *tweetManageServant) DeletePostCollection(p *core.PostCollection) error {
// TODO
debug.NotImplemented()
return nil
}
func (s *tweetManageServant) CreatePostContent(content *core.PostContent) (*core.PostContent, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *tweetManageServant) CreateAttachment(attachment *core.Attachment) (*core.Attachment, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *tweetManageServant) CreatePost(post *core.Post) (*core.Post, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *tweetManageServant) DeletePost(post *core.Post) ([]string, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *tweetManageServant) deleteCommentByPostId(db *gorm.DB, postId int64) ([]string, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *tweetManageServant) LockPost(post *core.Post) error {
// TODO
debug.NotImplemented()
return nil
}
func (s *tweetManageServant) StickPost(post *core.Post) error {
// TODO
debug.NotImplemented()
return nil
}
func (s *tweetManageServant) VisiblePost(post *core.Post, visibility core.PostVisibleT) error {
// TODO
debug.NotImplemented()
return nil
}
func (s *tweetManageServant) UpdatePost(post *core.Post) error {
// TODO
debug.NotImplemented()
return nil
}
func (s *tweetManageServant) CreatePostStar(postID, userID int64) (*core.PostStar, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *tweetManageServant) DeletePostStar(p *core.PostStar) error {
// TODO
debug.NotImplemented()
return nil
}
func (s *tweetServant) GetPostByID(id int64) (*core.Post, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *tweetServant) GetPosts(conditions *core.ConditionsT, offset, limit int) ([]*core.Post, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *tweetServant) GetPostCount(conditions *core.ConditionsT) (int64, error) {
// TODO
debug.NotImplemented()
return 0, nil
}
func (s *tweetServant) GetUserPostStar(postID, userID int64) (*core.PostStar, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *tweetServant) GetUserPostStars(userID int64, offset, limit int) ([]*core.PostStar, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *tweetServant) GetUserPostStarCount(userID int64) (int64, error) {
// TODO
debug.NotImplemented()
return 0, nil
}
func (s *tweetServant) GetUserPostCollection(postID, userID int64) (*core.PostCollection, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *tweetServant) GetUserPostCollections(userID int64, offset, limit int) ([]*core.PostCollection, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *tweetServant) GetUserPostCollectionCount(userID int64) (int64, error) {
// TODO
debug.NotImplemented()
return 0, nil
}
func (s *tweetServant) GetUserWalletBills(userID int64, offset, limit int) ([]*core.WalletStatement, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *tweetServant) GetUserWalletBillCount(userID int64) (int64, error) {
// TODO
debug.NotImplemented()
return 0, nil
}
func (s *tweetServant) GetPostAttatchmentBill(postID, userID int64) (*core.PostAttachmentBill, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *tweetServant) GetPostContentsByIDs(ids []int64) ([]*core.PostContent, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *tweetServant) GetPostContentByID(id int64) (*core.PostContent, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func newTweetService(db *pgx.Conn) core.TweetService {
return &tweetServant{
db: db,
q: dbr.New(db),
}
}
func newTweetManageService(db *pgx.Conn, cacheIndex core.CacheIndexService) core.TweetManageService {
return &tweetManageServant{
db: db,
q: dbr.New(db),
}
}
func newTweetHelpService(db *pgx.Conn) core.TweetHelpService {
return &tweetHelpServant{
db: db,
q: dbr.New(db),
}
}

@ -0,0 +1,76 @@
// Copyright 2023 ROC. All rights reserved.
// Use of this source code is governed by a MIT style
// license that can be found in the LICENSE file.
package slonik
import (
"github.com/jackc/pgx/v5"
"github.com/rocboss/paopao-ce/internal/core"
dbr "github.com/rocboss/paopao-ce/internal/dao/slonik/ce/postgres"
"github.com/rocboss/paopao-ce/pkg/debug"
)
var (
_ core.UserManageService = (*userManageServant)(nil)
)
type userManageServant struct {
db *pgx.Conn
q dbr.Querier
}
func (s *userManageServant) GetUserByID(id int64) (*core.User, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *userManageServant) GetUserByUsername(username string) (*core.User, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *userManageServant) GetUserByPhone(phone string) (*core.User, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *userManageServant) GetUsersByIDs(ids []int64) ([]*core.User, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *userManageServant) GetUsersByKeyword(keyword string) ([]*core.User, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *userManageServant) GetTagsByKeyword(keyword string) ([]*core.Tag, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *userManageServant) CreateUser(user *core.User) (*core.User, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *userManageServant) UpdateUser(user *core.User) error {
// TODO
debug.NotImplemented()
return nil
}
func newUserManageService(db *pgx.Conn) core.UserManageService {
return &userManageServant{
db: db,
q: dbr.New(db),
}
}

@ -0,0 +1,63 @@
// Copyright 2023 ROC. All rights reserved.
// Use of this source code is governed by a MIT style
// license that can be found in the LICENSE file.
package slonik
import (
"github.com/jackc/pgx/v5"
"github.com/rocboss/paopao-ce/internal/core"
dbr "github.com/rocboss/paopao-ce/internal/dao/slonik/ce/postgres"
"github.com/rocboss/paopao-ce/pkg/debug"
)
var (
_ core.WalletService = (*walletServant)(nil)
)
type walletServant struct {
db *pgx.Conn
q dbr.Querier
}
func (s *walletServant) GetRechargeByID(id int64) (*core.WalletRecharge, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *walletServant) CreateRecharge(userId, amount int64) (*core.WalletRecharge, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *walletServant) GetUserWalletBills(userID int64, offset, limit int) ([]*core.WalletStatement, error) {
// TODO
debug.NotImplemented()
return nil, nil
}
func (s *walletServant) GetUserWalletBillCount(userID int64) (int64, error) {
// TODO
debug.NotImplemented()
return 0, nil
}
func (s *walletServant) HandleRechargeSuccess(recharge *core.WalletRecharge, tradeNo string) error {
// TODO
debug.NotImplemented()
return nil
}
func (s *walletServant) HandlePostAttachmentBought(post *core.Post, user *core.User) error {
// TODO
debug.NotImplemented()
return nil
}
func newWalletService(db *pgx.Conn) core.WalletService {
return &walletServant{
db: db,
q: dbr.New(db),
}
}
Loading…
Cancel
Save