27389164b0
- Implemented image folder repository with CRUD operations. - Added image reference repository for managing image references to articles. - Created image repository for handling image assets, including listing, inserting, updating, and deleting images. - Introduced image usage repository to track storage usage and quotas for tenants. - Added SQL queries for image assets, folders, references, and usage. - Developed image handler for HTTP endpoints to manage images and folders. - Created database migration scripts for image-related tables and structures.
168 lines
4.8 KiB
Go
168 lines
4.8 KiB
Go
// Code generated by sqlc. DO NOT EDIT.
|
|
// versions:
|
|
// sqlc v1.30.0
|
|
// source: image_reference.sql
|
|
|
|
package generated
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/jackc/pgx/v5/pgtype"
|
|
)
|
|
|
|
const countImageReferences = `-- name: CountImageReferences :one
|
|
SELECT COUNT(*)::INT AS total
|
|
FROM image_asset_references
|
|
WHERE tenant_id = $1 AND image_asset_id = $2
|
|
`
|
|
|
|
type CountImageReferencesParams struct {
|
|
TenantID int64 `json:"tenant_id"`
|
|
ImageAssetID int64 `json:"image_asset_id"`
|
|
}
|
|
|
|
func (q *Queries) CountImageReferences(ctx context.Context, arg CountImageReferencesParams) (int32, error) {
|
|
row := q.db.QueryRow(ctx, countImageReferences, arg.TenantID, arg.ImageAssetID)
|
|
var total int32
|
|
err := row.Scan(&total)
|
|
return total, err
|
|
}
|
|
|
|
const deleteImageReferencesByArticle = `-- name: DeleteImageReferencesByArticle :exec
|
|
DELETE FROM image_asset_references
|
|
WHERE tenant_id = $1 AND article_id = $2
|
|
`
|
|
|
|
type DeleteImageReferencesByArticleParams struct {
|
|
TenantID int64 `json:"tenant_id"`
|
|
ArticleID int64 `json:"article_id"`
|
|
}
|
|
|
|
func (q *Queries) DeleteImageReferencesByArticle(ctx context.Context, arg DeleteImageReferencesByArticleParams) error {
|
|
_, err := q.db.Exec(ctx, deleteImageReferencesByArticle, arg.TenantID, arg.ArticleID)
|
|
return err
|
|
}
|
|
|
|
const deleteImageReferencesByArticleScope = `-- name: DeleteImageReferencesByArticleScope :exec
|
|
DELETE FROM image_asset_references
|
|
WHERE tenant_id = $1 AND article_id = $2 AND ref_scope = $3
|
|
`
|
|
|
|
type DeleteImageReferencesByArticleScopeParams struct {
|
|
TenantID int64 `json:"tenant_id"`
|
|
ArticleID int64 `json:"article_id"`
|
|
RefScope string `json:"ref_scope"`
|
|
}
|
|
|
|
func (q *Queries) DeleteImageReferencesByArticleScope(ctx context.Context, arg DeleteImageReferencesByArticleScopeParams) error {
|
|
_, err := q.db.Exec(ctx, deleteImageReferencesByArticleScope, arg.TenantID, arg.ArticleID, arg.RefScope)
|
|
return err
|
|
}
|
|
|
|
const listImageReferenceArticles = `-- name: ListImageReferenceArticles :many
|
|
SELECT DISTINCT r.article_id, r.ref_scope
|
|
FROM image_asset_references r
|
|
WHERE r.tenant_id = $1 AND r.image_asset_id = $2
|
|
`
|
|
|
|
type ListImageReferenceArticlesParams struct {
|
|
TenantID int64 `json:"tenant_id"`
|
|
ImageAssetID int64 `json:"image_asset_id"`
|
|
}
|
|
|
|
type ListImageReferenceArticlesRow struct {
|
|
ArticleID int64 `json:"article_id"`
|
|
RefScope string `json:"ref_scope"`
|
|
}
|
|
|
|
func (q *Queries) ListImageReferenceArticles(ctx context.Context, arg ListImageReferenceArticlesParams) ([]ListImageReferenceArticlesRow, error) {
|
|
rows, err := q.db.Query(ctx, listImageReferenceArticles, arg.TenantID, arg.ImageAssetID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []ListImageReferenceArticlesRow
|
|
for rows.Next() {
|
|
var i ListImageReferenceArticlesRow
|
|
if err := rows.Scan(&i.ArticleID, &i.RefScope); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, i)
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const listImageReferences = `-- name: ListImageReferences :many
|
|
SELECT r.id, r.tenant_id, r.image_asset_id, r.article_id, r.ref_scope, r.created_at
|
|
FROM image_asset_references r
|
|
WHERE r.tenant_id = $1 AND r.image_asset_id = $2
|
|
`
|
|
|
|
type ListImageReferencesParams struct {
|
|
TenantID int64 `json:"tenant_id"`
|
|
ImageAssetID int64 `json:"image_asset_id"`
|
|
}
|
|
|
|
type ListImageReferencesRow struct {
|
|
ID int64 `json:"id"`
|
|
TenantID int64 `json:"tenant_id"`
|
|
ImageAssetID int64 `json:"image_asset_id"`
|
|
ArticleID int64 `json:"article_id"`
|
|
RefScope string `json:"ref_scope"`
|
|
CreatedAt pgtype.Timestamptz `json:"created_at"`
|
|
}
|
|
|
|
func (q *Queries) ListImageReferences(ctx context.Context, arg ListImageReferencesParams) ([]ListImageReferencesRow, error) {
|
|
rows, err := q.db.Query(ctx, listImageReferences, arg.TenantID, arg.ImageAssetID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []ListImageReferencesRow
|
|
for rows.Next() {
|
|
var i ListImageReferencesRow
|
|
if err := rows.Scan(
|
|
&i.ID,
|
|
&i.TenantID,
|
|
&i.ImageAssetID,
|
|
&i.ArticleID,
|
|
&i.RefScope,
|
|
&i.CreatedAt,
|
|
); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, i)
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const upsertImageReference = `-- name: UpsertImageReference :exec
|
|
INSERT INTO image_asset_references (tenant_id, image_asset_id, article_id, ref_scope)
|
|
VALUES ($1, $2, $3, $4)
|
|
ON CONFLICT (image_asset_id, article_id, ref_scope) DO UPDATE SET updated_at = NOW()
|
|
`
|
|
|
|
type UpsertImageReferenceParams struct {
|
|
TenantID int64 `json:"tenant_id"`
|
|
ImageAssetID int64 `json:"image_asset_id"`
|
|
ArticleID int64 `json:"article_id"`
|
|
RefScope string `json:"ref_scope"`
|
|
}
|
|
|
|
func (q *Queries) UpsertImageReference(ctx context.Context, arg UpsertImageReferenceParams) error {
|
|
_, err := q.db.Exec(ctx, upsertImageReference,
|
|
arg.TenantID,
|
|
arg.ImageAssetID,
|
|
arg.ArticleID,
|
|
arg.RefScope,
|
|
)
|
|
return err
|
|
}
|