Performer checksum from name. Default image

This commit is contained in:
WithoutPants
2019-08-21 12:51:30 +10:00
parent 32a4f34c7c
commit 996fd9c70a
8 changed files with 30 additions and 14 deletions

View File

@@ -15,7 +15,7 @@ mutation PerformerCreate(
$twitter: String, $twitter: String,
$instagram: String, $instagram: String,
$favorite: Boolean, $favorite: Boolean,
$image: String!) { $image: String) {
performerCreate(input: { performerCreate(input: {
name: $name, name: $name,

View File

@@ -41,7 +41,7 @@ input PerformerCreateInput {
instagram: String instagram: String
favorite: Boolean favorite: Boolean
"""This should be base64 encoded""" """This should be base64 encoded"""
image: String! image: String
} }
input PerformerUpdateInput { input PerformerUpdateInput {

View File

@@ -3,16 +3,26 @@ package api
import ( import (
"context" "context"
"database/sql" "database/sql"
"strconv"
"time"
"github.com/stashapp/stash/pkg/database" "github.com/stashapp/stash/pkg/database"
"github.com/stashapp/stash/pkg/models" "github.com/stashapp/stash/pkg/models"
"github.com/stashapp/stash/pkg/utils" "github.com/stashapp/stash/pkg/utils"
"strconv"
"time"
) )
func (r *mutationResolver) PerformerCreate(ctx context.Context, input models.PerformerCreateInput) (*models.Performer, error) { func (r *mutationResolver) PerformerCreate(ctx context.Context, input models.PerformerCreateInput) (*models.Performer, error) {
// Process the base 64 encoded image string // generate checksum from performer name rather than image
checksum, imageData, err := utils.ProcessBase64Image(input.Image) checksum := utils.MD5FromString(*input.Name)
var imageData []byte
var err error
if input.Image == nil {
input.Image = &models.DefaultPerformerImage
}
_, imageData, err = utils.ProcessBase64Image(*input.Image)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@@ -188,4 +198,3 @@ func (r *mutationResolver) PerformerDestroy(ctx context.Context, input models.Pe
} }
return true, nil return true, nil
} }

View File

@@ -2059,7 +2059,7 @@ input PerformerCreateInput {
instagram: String instagram: String
favorite: Boolean favorite: Boolean
"""This should be base64 encoded""" """This should be base64 encoded"""
image: String! image: String
} }
input PerformerUpdateInput { input PerformerUpdateInput {
@@ -8255,7 +8255,7 @@ func (ec *executionContext) unmarshalInputPerformerCreateInput(ctx context.Conte
} }
case "image": case "image":
var err error var err error
it.Image, err = ec.unmarshalNString2string(ctx, v) it.Image, err = ec.unmarshalOString2string(ctx, v)
if err != nil { if err != nil {
return it, err return it, err
} }

View File

@@ -106,7 +106,7 @@ type PerformerCreateInput struct {
Instagram *string `json:"instagram"` Instagram *string `json:"instagram"`
Favorite *bool `json:"favorite"` Favorite *bool `json:"favorite"`
// This should be base64 encoded // This should be base64 encoded
Image string `json:"image"` Image *string `json:"image"`
} }
type PerformerDestroyInput struct { type PerformerDestroyInput struct {

View File

@@ -27,3 +27,5 @@ type Performer struct {
CreatedAt SQLiteTimestamp `db:"created_at" json:"created_at"` CreatedAt SQLiteTimestamp `db:"created_at" json:"created_at"`
UpdatedAt SQLiteTimestamp `db:"updated_at" json:"updated_at"` UpdatedAt SQLiteTimestamp `db:"updated_at" json:"updated_at"`
} }
var DefaultPerformerImage string = "data:image/jpeg;base64,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"

View File

@@ -12,6 +12,11 @@ func MD5FromBytes(data []byte) string {
return fmt.Sprintf("%x", result) return fmt.Sprintf("%x", result)
} }
func MD5FromString(str string) string {
data := []byte(str)
return MD5FromBytes(data)
}
func MD5FromFilePath(filePath string) (string, error) { func MD5FromFilePath(filePath string) (string, error) {
f, err := os.Open(filePath) f, err := os.Open(filePath)
if err != nil { if err != nil {

View File

@@ -1,6 +1,6 @@
/* tslint:disable */ /* tslint:disable */
/* eslint-disable */ /* eslint-disable */
// Generated in 2019-08-14T07:29:27+10:00 // Generated in 2019-08-20T18:32:35+10:00
export type Maybe<T> = T | undefined; export type Maybe<T> = T | undefined;
export interface SceneFilterType { export interface SceneFilterType {
@@ -147,7 +147,7 @@ export interface PerformerCreateInput {
favorite?: Maybe<boolean>; favorite?: Maybe<boolean>;
/** This should be base64 encoded */ /** This should be base64 encoded */
image: string; image?: Maybe<string>;
} }
export interface PerformerUpdateInput { export interface PerformerUpdateInput {
@@ -294,7 +294,7 @@ export type PerformerCreateVariables = {
twitter?: Maybe<string>; twitter?: Maybe<string>;
instagram?: Maybe<string>; instagram?: Maybe<string>;
favorite?: Maybe<boolean>; favorite?: Maybe<boolean>;
image: string; image?: Maybe<string>;
}; };
export type PerformerCreateMutation = { export type PerformerCreateMutation = {
@@ -1572,7 +1572,7 @@ export const PerformerCreateDocument = gql`
$twitter: String $twitter: String
$instagram: String $instagram: String
$favorite: Boolean $favorite: Boolean
$image: String! $image: String
) { ) {
performerCreate( performerCreate(
input: { input: {