mirror of
https://github.com/PretendoNetwork/super-mario-maker.git
synced 2026-03-28 20:54:37 -05:00
92 lines
1.9 KiB
Go
92 lines
1.9 KiB
Go
package datastore_db
|
|
|
|
import (
|
|
"time"
|
|
|
|
"github.com/PretendoNetwork/nex-go/v2"
|
|
"github.com/PretendoNetwork/nex-go/v2/types"
|
|
datastore_types "github.com/PretendoNetwork/nex-protocols-go/v2/datastore/types"
|
|
"github.com/PretendoNetwork/super-mario-maker/database"
|
|
"github.com/PretendoNetwork/super-mario-maker/globals"
|
|
"github.com/lib/pq"
|
|
)
|
|
|
|
func InitializeObjectByPreparePostParam(ownerPID types.PID, param datastore_types.DataStorePreparePostParam) (uint64, *nex.Error) {
|
|
var dataID uint64
|
|
|
|
tagArray := make([]string, 0, len(param.Tags))
|
|
for i := range param.Tags {
|
|
tagArray = append(tagArray, string(param.Tags[i]))
|
|
}
|
|
|
|
extraDataArray := make([]string, 0, len(param.ExtraData))
|
|
for i := range param.Tags {
|
|
extraDataArray = append(extraDataArray, string(param.ExtraData[i]))
|
|
}
|
|
|
|
now := time.Now()
|
|
err := database.Postgres.QueryRow(`INSERT INTO datastore.objects (
|
|
owner,
|
|
size,
|
|
name,
|
|
data_type,
|
|
meta_binary,
|
|
permission,
|
|
permission_recipients,
|
|
delete_permission,
|
|
delete_permission_recipients,
|
|
flag,
|
|
period,
|
|
refer_data_id,
|
|
tags,
|
|
persistence_slot_id,
|
|
extra_data,
|
|
creation_date,
|
|
update_date
|
|
) VALUES (
|
|
$1,
|
|
$2,
|
|
$3,
|
|
$4,
|
|
$5,
|
|
$6,
|
|
$7,
|
|
$8,
|
|
$9,
|
|
$10,
|
|
$11,
|
|
$12,
|
|
$13,
|
|
$14,
|
|
$15,
|
|
$16,
|
|
$17
|
|
) RETURNING data_id`,
|
|
ownerPID,
|
|
param.Size,
|
|
param.Name,
|
|
param.DataType,
|
|
param.MetaBinary,
|
|
param.Permission.Permission,
|
|
pq.Array(param.Permission.RecipientIDs),
|
|
param.DelPermission.Permission,
|
|
pq.Array(param.DelPermission.RecipientIDs),
|
|
param.Flag,
|
|
param.Period,
|
|
param.ReferDataID,
|
|
pq.Array(tagArray),
|
|
param.PersistenceInitParam.PersistenceSlotID, // TODO - Check param.PersistenceInitParam.DeleteLastObject?
|
|
pq.Array(extraDataArray),
|
|
now,
|
|
now,
|
|
).Scan(&dataID)
|
|
|
|
if err != nil {
|
|
globals.Logger.Error(err.Error())
|
|
// TODO - Send more specific errors?
|
|
return 0, nex.NewError(nex.ResultCodes.DataStore.Unknown, err.Error())
|
|
}
|
|
|
|
return dataID, nil
|
|
}
|