mirror of
https://github.com/PretendoNetwork/super-mario-maker.git
synced 2026-04-27 18:46:47 -05:00
82 lines
1.6 KiB
Go
82 lines
1.6 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
|
|
|
|
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(param.Tags),
|
|
param.PersistenceInitParam.PersistenceSlotID, // TODO - Check param.PersistenceInitParam.DeleteLastObject?
|
|
pq.Array(param.ExtraData),
|
|
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
|
|
}
|