Latest Threat Research:SANDWORM_MODE: Shai-Hulud-Style npm Worm Hijacks CI Workflows and Poisons AI Toolchains.Details
Socket
Book a DemoInstallSign in
Socket

com.backnd.database

Package Overview
Dependencies
Maintainers
1
Versions
12
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

com.backnd.database - npm Package Compare versions

Comparing version
0.0.7
to
0.0.8
+9
-3
Internal/SqlBuilder.cs

@@ -253,3 +253,3 @@ using System;

/// <summary>
/// SetClause 목록 기반 UPDATE 쿼리 생성 (Inc/Dec용)
/// SetClause 목록 기반 UPDATE 쿼리 생성 (Set/Inc/Dec용)
/// </summary>

@@ -262,4 +262,10 @@ public static string BuildUpdateQueryFromSetClauses(string tableName, List<SetClause> setClauses, string whereClause)

var setStatements = setClauses.Select(clause =>
$"{clause.ColumnName} = {clause.ColumnName} {clause.Operator} {ValueFormatter.FormatValueForQuery(clause.Value)}"
);
{
var formattedValue = ValueFormatter.FormatValueForQuery(clause.Value);
// Operator가 null이면 직접 값 설정 (Set), 아니면 산술 연산 (Inc/Dec)
if (string.IsNullOrEmpty(clause.Operator))
return $"{clause.ColumnName} = {formattedValue}";
else
return $"{clause.ColumnName} = {clause.ColumnName} {clause.Operator} {formattedValue}";
});

@@ -266,0 +272,0 @@ return $"UPDATE {tableName} SET {string.Join(", ", setStatements)} WHERE {whereClause}";

@@ -15,7 +15,7 @@ using System;

{
//private static readonly string SERVER_URL = "http://localhost:10002";
private static readonly string SERVER_URL = "http://localhost:10002";
//private static readonly string SERVER_URL = "https://api.alpha.thebackend.io";
//private static readonly string SERVER_URL = "https://api.beta.thebackend.io";
private static readonly string SERVER_URL = "https://api.thebackend.io";
//private static readonly string SERVER_URL = "https://api.thebackend.io";
private static readonly string ENDPOINT = "/v1/database/store";

@@ -22,0 +22,0 @@ private static readonly int MAX_RETRIES = 3;

{
"name": "com.backnd.database",
"version": "0.0.7",
"version": "0.0.8",
"displayName": "BACKND Database",

@@ -5,0 +5,0 @@ "description": "BACKND Database is a Unity SDK for seamless integration with BACKND cloud database services.\n\nEasily manage and synchronize game data such as player profiles, game states, and leaderboards across multiple platforms.\nIdeal for Unity developers looking to implement robust database solutions without complex backend setups.",

@@ -245,2 +245,15 @@ using System;

public QueryBuilder<T> Set<TField>(Expression<Func<T, TField>> selector, TField value)
{
var columnName = GetColumnNameFromExpression(selector);
ValidateNoDuplicateSetClause(columnName);
setClauses.Add(new SetClause
{
ColumnName = columnName,
Operator = null,
Value = value
});
return this;
}
private void ValidateNoDuplicateSetClause(string columnName)

@@ -252,9 +265,9 @@ {

public async BTask<MutationResult> Exec()
public async BTask<MutationResult> Update()
{
if (setClauses.Count == 0)
throw new InvalidOperationException("No modifications specified. Use Inc() or Dec() before Exec()");
throw new InvalidOperationException("No modifications specified. Use Set(), Inc() or Dec() before Update()");
if (whereConditions.Count == 0)
throw new InvalidOperationException("Exec requires a Where() condition");
throw new InvalidOperationException("Update requires a Where() condition");

@@ -281,4 +294,10 @@ var whereClause = BuildWhereClause();

var setStatements = setClauses.Select(clause =>
$"{clause.ColumnName} = {clause.ColumnName} {clause.Operator} {FormatValueForQuery(clause.Value)}"
);
{
var formattedValue = FormatValueForQuery(clause.Value);
// Operator가 null이면 직접 값 설정 (Set), 아니면 산술 연산 (Inc/Dec)
if (string.IsNullOrEmpty(clause.Operator))
return $"{clause.ColumnName} = {formattedValue}";
else
return $"{clause.ColumnName} = {clause.ColumnName} {clause.Operator} {formattedValue}";
});

@@ -285,0 +304,0 @@ return $"UPDATE {modelInstance.GetTableName()} SET {string.Join(", ", setStatements)} WHERE {whereClause}";

@@ -40,3 +40,3 @@ using System;

if (whereConditions.Count == 0)
throw new InvalidOperationException("Inc/Dec requires a WHERE clause");
throw new InvalidOperationException("Set/Inc/Dec requires a WHERE clause");

@@ -112,2 +112,18 @@ var whereClause = SqlBuilder.BuildWhereClause(

/// <summary>
/// 필드 값 직접 설정
/// </summary>
public TransactionQueryBuilder<T> Set<TField>(Expression<Func<T, TField>> selector, TField value)
{
var columnName = expressionAnalyzer.GetColumnNameFromKeySelector(selector);
ValidateNoDuplicateSetClause(columnName);
setClauses.Add(new SetClause
{
ColumnName = columnName,
Operator = null,
Value = value
});
return this;
}
private void ValidateNoDuplicateSetClause(string columnName)

@@ -167,2 +183,30 @@ {

/// <summary>
/// Set/Inc/Dec로 지정한 필드만 UPDATE 작업 추가
/// </summary>
public TransactionBuilder Update()
{
if (setClauses.Count == 0)
throw new InvalidOperationException("No modifications specified. Use Set(), Inc() or Dec() before Update()");
if (whereConditions.Count == 0)
throw new InvalidOperationException("Update requires a WHERE clause");
var whereClause = SqlBuilder.BuildWhereClause(
whereConditions,
isOfCurrentUser,
modelInstance.GetTableType());
var sql = SqlBuilder.BuildUpdateQueryFromSetClauses(
modelInstance.GetTableName(),
setClauses,
whereClause);
transaction.AddStatement(sql);
setClauses.Clear();
// 활성 QueryBuilder 해제
transaction.activeQueryBuilder = null;
return transaction;
}
/// <summary>
/// DELETE 작업 추가

@@ -169,0 +213,0 @@ /// </summary>