GS2-Deploy/CDK Reference of GS2-Lottery
Entities
Namespace
Namespace
Namespace is a mechanism that allows multiple uses of the same service for different purposes within a single project. Basically, GS2 services have a layer called namespace, and different namespaces are treated as completely different data spaces, even for the same service.
Therefore, it is necessary to create a namespace before starting to use each service.
| Type | Condition | Require | Default | Limitation | Description | |
|---|---|---|---|---|---|---|
| name | string | ✓ | ~ 128 chars | Namespace name | ||
| description | string | ~ 1024 chars | Description | |||
| transactionSetting | TransactionSetting | ✓ | Transaction settings | |||
| lotteryTriggerScriptId | string | ~ 1024 chars | GS2-Script scripts to be called when the lottery is executed | |||
| logSetting | LogSetting | Log output settings |
GetAttr
Generation results of resources that can be obtained with the !GetAttr tag
| Type | Description | |
|---|---|---|
| Item | Namespace | Namespace created |
Implementation Example
Type: GS2::Lottery::Namespace
Properties:
Name: namespace-0001
Description: null
TransactionSetting:
EnableAutoRun: true
QueueNamespaceId: grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001
KeyId: grn:gs2:ap-northeast-1:YourOwnerId:key:namespace-0001:key:key-0001
LotteryTriggerScriptId: null
LogSetting:
LoggingNamespaceId: grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001import (
"github.com/gs2io/gs2-golang-cdk/core"
"github.com/gs2io/gs2-golang-cdk/lottery"
"github.com/gs2io/gs2-golang-cdk/money"
"github.com/openlyinc/pointy"
)
SampleStack := core.NewStack()
lottery.NewNamespace(
&SampleStack,
"namespace-0001",
lottery.NamespaceOptions{
TransactionSetting: core.NewTransactionSetting(
core.TransactionSettingOptions{
QueueNamespaceId: pointy.String("grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001"),
},
),
LogSetting: &core.LogSetting{
LoggingNamespaceId: "grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001",
},
},
)
println(SampleStack.Yaml()) // Generate Template
class SampleStack extends \Gs2Cdk\Core\Model\Stack
{
function __construct() {
parent::__construct();
new \Gs2Cdk\Lottery\Model\Namespace_(
stack: $this,
name: "namespace-0001",
options: new \Gs2Cdk\Lottery\Model\Options\NamespaceOptions(
transactionSetting: new \Gs2Cdk\Core\Model\TransactionSetting(
new \Gs2Cdk\Core\Model\TransactionSettingOptions(
queueNamespaceId: "grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001"
)
),
logSetting: new \Gs2Cdk\Core\Model\LogSetting(
loggingNamespaceId: "grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001"
)
)
);
}
}
print((new SampleStack())->yaml()); // Generate Template
class SampleStack extends io.gs2.cdk.core.model.Stack
{
public SampleStack() {
super();
new io.gs2.cdk.lottery.model.Namespace(
this,
"namespace-0001",
new io.gs2.cdk.lottery.model.options.NamespaceOptions()
.withTransactionSetting(new io.gs2.cdk.core.model.TransactionSetting(
new io.gs2.cdk.core.model.options.TransactionSettingOptions()
.withQueueNamespaceId("grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001")
))
.withLogSetting(new io.gs2.cdk.core.model.LogSetting(
"grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001"
))
);
}
}
System.out.println(new SampleStack().yaml()); // Generate Templatepublic class SampleStack : Gs2Cdk.Core.Model.Stack
{
public SampleStack() {
new Gs2Cdk.Gs2Lottery.Model.Namespace(
stack: this,
name: "namespace-0001",
options: new Gs2Cdk.Gs2Lottery.Model.Options.NamespaceOptions
{
transactionSetting = new Gs2Cdk.Core.Model.TransactionSetting(
options: new Gs2Cdk.Core.Model.TransactionSettingOptions
{
queueNamespaceId = "grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001"
}
),
logSetting = new Gs2Cdk.Core.Model.LogSetting(
loggingNamespaceId: "grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001"
)
}
);
}
}
Debug.Log(new SampleStack().Yaml()); // Generate Templateimport core from "@/gs2cdk/core";
import lottery from "@/gs2cdk/lottery";
class SampleStack extends core.Stack
{
public constructor() {
super();
new lottery.model.Namespace(
this,
"namespace-0001",
{
transactionSetting: new core.TransactionSetting(
{
queueNamespaceId: "grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001"
}
),
logSetting: new core.LogSetting(
"grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001"
)
}
);
}
}
console.log(new SampleStack().yaml()); // Generate Template
from gs2_cdk import Stack, core, lottery
class SampleStack(Stack):
def __init__(self):
super().__init__()
lottery.Namespace(
stack=self,
name='namespace-0001',
options=lottery.NamespaceOptions(
transaction_setting=core.TransactionSetting(
options=core.TransactionSettingOptions(
queue_namespace_id='grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001',
)
),
log_setting=core.LogSetting(
logging_namespace_id='grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001',
),
),
)
print(SampleStack().yaml()) # Generate TemplateCurrentLotteryMaster
Currently available master data
GS2 uses JSON format files for master data management. By uploading the file, you can actually reflect the settings on the server.
We provide a master data editor on the management console as a way to create JSON files, but you can also use the service by creating a tool that is more suitable for game operation and writing out a JSON file in the appropriate format.
Note
Please refer to Master Data Reference of GS2-Lottery for the JSON file format.| Type | Condition | Require | Default | Limitation | Description | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128 chars | Namespace name | ||||||||
| mode | String Enum enum { “direct”, “preUpload” } | ✓ | “direct” | ~ 128 chars | Update mode
| |||||||
| settings | string | {mode} == “direct” | ✓ | ~ 5242880 chars | Master Data If mode is “direct”, then required | |||||||
| uploadToken | string | {mode} == “preUpload” | ✓ | ~ 1024 chars | Token used to reflect results after upload If mode is “preUpload”, then required |
GetAttr
Generation results of resources that can be obtained with the !GetAttr tag
| Type | Description | |
|---|---|---|
| Item | CurrentLotteryMaster | Updated, currently available lottery settings |
Implementation Example
Type: GS2::Lottery::CurrentLotteryMaster
Properties:
NamespaceName: namespace-0001
Mode: null
Settings: {
"version": "2019-02-21",
"lotteryModels": [
{
"name": "gacha",
"mode": "normal",
"method": "prize_table",
"metadata": "GACHA",
"prizeTableName": "gacha"
},
{
"name": "gacha_ssr",
"mode": "normal",
"method": "prize_table",
"metadata": "SSR",
"prizeTableName": "gacha-ssr"
},
{
"name": "gacha_sr",
"mode": "normal",
"method": "prize_table",
"metadata": "SR",
"prizeTableName": "gacha-sr"
},
{
"name": "gacha_r",
"mode": "normal",
"method": "prize_table",
"metadata": "R",
"prizeTableName": "gacha-r"
},
{
"name": "box",
"mode": "box",
"method": "prize_table",
"metadata": "BOX",
"prizeTableName": "box"
}
],
"prizeTables": [
{
"name": "gacha",
"prizes": [
{
"prizeId": "prize-1",
"type": "prize_table",
"prizeTableName": "gacha-ssr",
"weight": 5
},
{
"prizeId": "prize-2",
"type": "prize_table",
"prizeTableName": "gacha-sr",
"weight": 15
},
{
"prizeId": "prize-3",
"type": "prize_table",
"prizeTableName": "gacha-r",
"weight": 80
}
],
"metadata": "SSR"
},
{
"name": "gacha-ssr",
"prizes": [
{
"prizeId": "prize-4",
"type": "action",
"acquireActions": [
{
"action": "Gs2Money:DepositByUserId",
"request": {
"namespaceName": "namespace-0001",
"slot": 0,
"price": 100,
"count": 1,
"userId": "#{userId}"
}
}
],
"weight": 1
},
{
"prizeId": "prize-5",
"type": "action",
"acquireActions": [
{
"action": "Gs2Money:DepositByUserId",
"request": {
"namespaceName": "namespace-0001",
"slot": 0,
"price": 100,
"count": 1,
"userId": "#{userId}"
}
}
],
"weight": 2
},
{
"prizeId": "prize-6",
"type": "action",
"acquireActions": [
{
"action": "Gs2Money:DepositByUserId",
"request": {
"namespaceName": "namespace-0001",
"slot": 0,
"price": 100,
"count": 1,
"userId": "#{userId}"
}
}
],
"weight": 3
}
],
"metadata": "SSR"
},
{
"name": "gacha-sr",
"prizes": [
{
"prizeId": "prize-7",
"type": "action",
"acquireActions": [
{
"action": "Gs2Money:DepositByUserId",
"request": {
"namespaceName": "namespace-0001",
"slot": 0,
"price": 100,
"count": 1,
"userId": "#{userId}"
}
}
],
"weight": 10
},
{
"prizeId": "prize-8",
"type": "action",
"acquireActions": [
{
"action": "Gs2Money:DepositByUserId",
"request": {
"namespaceName": "namespace-0001",
"slot": 0,
"price": 100,
"count": 1,
"userId": "#{userId}"
}
}
],
"weight": 20
},
{
"prizeId": "prize-9",
"type": "action",
"acquireActions": [
{
"action": "Gs2Money:DepositByUserId",
"request": {
"namespaceName": "namespace-0001",
"slot": 0,
"price": 100,
"count": 1,
"userId": "#{userId}"
}
}
],
"weight": 30
}
],
"metadata": "SR"
},
{
"name": "gacha-r",
"prizes": [
{
"prizeId": "prize-10",
"type": "action",
"acquireActions": [
{
"action": "Gs2Money:DepositByUserId",
"request": {
"namespaceName": "namespace-0001",
"slot": 0,
"price": 100,
"count": 1,
"userId": "#{userId}"
}
}
],
"weight": 100
},
{
"prizeId": "prize-11",
"type": "action",
"acquireActions": [
{
"action": "Gs2Money:DepositByUserId",
"request": {
"namespaceName": "namespace-0001",
"slot": 0,
"price": 100,
"count": 1,
"userId": "#{userId}"
}
}
],
"weight": 200
},
{
"prizeId": "prize-12",
"type": "action",
"acquireActions": [
{
"action": "Gs2Money:DepositByUserId",
"request": {
"namespaceName": "namespace-0001",
"slot": 0,
"price": 100,
"count": 1,
"userId": "#{userId}"
}
}
],
"weight": 300
}
],
"metadata": "R"
},
{
"name": "box",
"prizes": [
{
"prizeId": "prize-13",
"type": "action",
"acquireActions": [
{
"action": "Gs2Money:DepositByUserId",
"request": {
"namespaceName": "namespace-0001",
"slot": 0,
"price": 100,
"count": 1,
"userId": "#{userId}"
}
}
],
"weight": 30
},
{
"prizeId": "prize-14",
"type": "action",
"acquireActions": [
{
"action": "Gs2Money:DepositByUserId",
"request": {
"namespaceName": "namespace-0001",
"slot": 0,
"price": 100,
"count": 1,
"userId": "#{userId}"
}
}
],
"weight": 20
},
{
"prizeId": "prize-15",
"type": "action",
"acquireActions": [
{
"action": "Gs2Money:DepositByUserId",
"request": {
"namespaceName": "namespace-0001",
"slot": 0,
"price": 100,
"count": 1,
"userId": "#{userId}"
}
}
],
"weight": 10
}
],
"metadata": "BOX"
}
]
}
UploadToken: nullimport (
"github.com/gs2io/gs2-golang-cdk/core"
"github.com/gs2io/gs2-golang-cdk/lottery"
"github.com/gs2io/gs2-golang-cdk/money"
"github.com/openlyinc/pointy"
)
SampleStack := core.NewStack()
lottery.NewNamespace(
&SampleStack,
"namespace-0001",
lottery.NamespaceOptions{},
).MasterData(
[]lottery.LotteryModel{
lottery.NewLotteryModel(
"gacha",
lottery.LotteryModelModeNormal,
lottery.LotteryModelMethodPrizeTable,
lottery.LotteryModelOptions{
Metadata: pointy.String("GACHA"),
PrizeTableName: pointy.String("gacha"),
},
),
lottery.NewLotteryModel(
"gacha_ssr",
lottery.LotteryModelModeNormal,
lottery.LotteryModelMethodPrizeTable,
lottery.LotteryModelOptions{
Metadata: pointy.String("SSR"),
PrizeTableName: pointy.String("gacha-ssr"),
},
),
lottery.NewLotteryModel(
"gacha_sr",
lottery.LotteryModelModeNormal,
lottery.LotteryModelMethodPrizeTable,
lottery.LotteryModelOptions{
Metadata: pointy.String("SR"),
PrizeTableName: pointy.String("gacha-sr"),
},
),
lottery.NewLotteryModel(
"gacha_r",
lottery.LotteryModelModeNormal,
lottery.LotteryModelMethodPrizeTable,
lottery.LotteryModelOptions{
Metadata: pointy.String("R"),
PrizeTableName: pointy.String("gacha-r"),
},
),
lottery.NewLotteryModel(
"box",
lottery.LotteryModelModeBox,
lottery.LotteryModelMethodPrizeTable,
lottery.LotteryModelOptions{
Metadata: pointy.String("BOX"),
PrizeTableName: pointy.String("box"),
},
),
},
[]lottery.PrizeTable{
lottery.NewPrizeTable(
"gacha",
[]lottery.Prize{
lottery.NewPrize(
"prize-1",
lottery.PrizeTypePrizeTable,
5,
lottery.PrizeOptions{
PrizeTableName: pointy.String("gacha-ssr"),
},
),
lottery.NewPrize(
"prize-2",
lottery.PrizeTypePrizeTable,
15,
lottery.PrizeOptions{
PrizeTableName: pointy.String("gacha-sr"),
},
),
lottery.NewPrize(
"prize-3",
lottery.PrizeTypePrizeTable,
80,
lottery.PrizeOptions{
PrizeTableName: pointy.String("gacha-r"),
},
),
},
lottery.PrizeTableOptions{
Metadata: pointy.String("SSR"),
},
),
lottery.NewPrizeTable(
"gacha-ssr",
[]lottery.Prize{
lottery.NewPrize(
"prize-4",
lottery.PrizeTypeAction,
1,
lottery.PrizeOptions{
AcquireActions: []core.AcquireAction{
money.DepositByUserId(
"namespace-0001",
0,
100,
1,
),
},
},
),
lottery.NewPrize(
"prize-5",
lottery.PrizeTypeAction,
2,
lottery.PrizeOptions{
AcquireActions: []core.AcquireAction{
money.DepositByUserId(
"namespace-0001",
0,
100,
1,
),
},
},
),
lottery.NewPrize(
"prize-6",
lottery.PrizeTypeAction,
3,
lottery.PrizeOptions{
AcquireActions: []core.AcquireAction{
money.DepositByUserId(
"namespace-0001",
0,
100,
1,
),
},
},
),
},
lottery.PrizeTableOptions{
Metadata: pointy.String("SSR"),
},
),
lottery.NewPrizeTable(
"gacha-sr",
[]lottery.Prize{
lottery.NewPrize(
"prize-7",
lottery.PrizeTypeAction,
10,
lottery.PrizeOptions{
AcquireActions: []core.AcquireAction{
money.DepositByUserId(
"namespace-0001",
0,
100,
1,
),
},
},
),
lottery.NewPrize(
"prize-8",
lottery.PrizeTypeAction,
20,
lottery.PrizeOptions{
AcquireActions: []core.AcquireAction{
money.DepositByUserId(
"namespace-0001",
0,
100,
1,
),
},
},
),
lottery.NewPrize(
"prize-9",
lottery.PrizeTypeAction,
30,
lottery.PrizeOptions{
AcquireActions: []core.AcquireAction{
money.DepositByUserId(
"namespace-0001",
0,
100,
1,
),
},
},
),
},
lottery.PrizeTableOptions{
Metadata: pointy.String("SR"),
},
),
lottery.NewPrizeTable(
"gacha-r",
[]lottery.Prize{
lottery.NewPrize(
"prize-10",
lottery.PrizeTypeAction,
100,
lottery.PrizeOptions{
AcquireActions: []core.AcquireAction{
money.DepositByUserId(
"namespace-0001",
0,
100,
1,
),
},
},
),
lottery.NewPrize(
"prize-11",
lottery.PrizeTypeAction,
200,
lottery.PrizeOptions{
AcquireActions: []core.AcquireAction{
money.DepositByUserId(
"namespace-0001",
0,
100,
1,
),
},
},
),
lottery.NewPrize(
"prize-12",
lottery.PrizeTypeAction,
300,
lottery.PrizeOptions{
AcquireActions: []core.AcquireAction{
money.DepositByUserId(
"namespace-0001",
0,
100,
1,
),
},
},
),
},
lottery.PrizeTableOptions{
Metadata: pointy.String("R"),
},
),
lottery.NewPrizeTable(
"box",
[]lottery.Prize{
lottery.NewPrize(
"prize-13",
lottery.PrizeTypeAction,
30,
lottery.PrizeOptions{
AcquireActions: []core.AcquireAction{
money.DepositByUserId(
"namespace-0001",
0,
100,
1,
),
},
},
),
lottery.NewPrize(
"prize-14",
lottery.PrizeTypeAction,
20,
lottery.PrizeOptions{
AcquireActions: []core.AcquireAction{
money.DepositByUserId(
"namespace-0001",
0,
100,
1,
),
},
},
),
lottery.NewPrize(
"prize-15",
lottery.PrizeTypeAction,
10,
lottery.PrizeOptions{
AcquireActions: []core.AcquireAction{
money.DepositByUserId(
"namespace-0001",
0,
100,
1,
),
},
},
),
},
lottery.PrizeTableOptions{
Metadata: pointy.String("BOX"),
},
),
},
)
println(SampleStack.Yaml()) // Generate Template
class SampleStack extends \Gs2Cdk\Core\Model\Stack
{
function __construct() {
parent::__construct();
(new \Gs2Cdk\Lottery\Model\Namespace_(
stack: $this,
name: "namespace-0001"
))->masterData(
[
new \Gs2Cdk\Lottery\Model\LotteryModel(
name:"gacha",
mode: \Gs2Cdk\Lottery\Model\Enums\LotteryModelMode::NORMAL,
method: \Gs2Cdk\Lottery\Model\Enums\LotteryModelMethod::PRIZE_TABLE,
options: new \Gs2Cdk\Lottery\Model\Options\LotteryModelOptions(
metadata:"GACHA",
prizeTableName:"gacha"
)
),
new \Gs2Cdk\Lottery\Model\LotteryModel(
name:"gacha_ssr",
mode: \Gs2Cdk\Lottery\Model\Enums\LotteryModelMode::NORMAL,
method: \Gs2Cdk\Lottery\Model\Enums\LotteryModelMethod::PRIZE_TABLE,
options: new \Gs2Cdk\Lottery\Model\Options\LotteryModelOptions(
metadata:"SSR",
prizeTableName:"gacha-ssr"
)
),
new \Gs2Cdk\Lottery\Model\LotteryModel(
name:"gacha_sr",
mode: \Gs2Cdk\Lottery\Model\Enums\LotteryModelMode::NORMAL,
method: \Gs2Cdk\Lottery\Model\Enums\LotteryModelMethod::PRIZE_TABLE,
options: new \Gs2Cdk\Lottery\Model\Options\LotteryModelOptions(
metadata:"SR",
prizeTableName:"gacha-sr"
)
),
new \Gs2Cdk\Lottery\Model\LotteryModel(
name:"gacha_r",
mode: \Gs2Cdk\Lottery\Model\Enums\LotteryModelMode::NORMAL,
method: \Gs2Cdk\Lottery\Model\Enums\LotteryModelMethod::PRIZE_TABLE,
options: new \Gs2Cdk\Lottery\Model\Options\LotteryModelOptions(
metadata:"R",
prizeTableName:"gacha-r"
)
),
new \Gs2Cdk\Lottery\Model\LotteryModel(
name:"box",
mode: \Gs2Cdk\Lottery\Model\Enums\LotteryModelMode::BOX,
method: \Gs2Cdk\Lottery\Model\Enums\LotteryModelMethod::PRIZE_TABLE,
options: new \Gs2Cdk\Lottery\Model\Options\LotteryModelOptions(
metadata:"BOX",
prizeTableName:"box"
)
)
],
[
new \Gs2Cdk\Lottery\Model\PrizeTable(
name:"gacha",
prizes:[
new \Gs2Cdk\Lottery\Model\Prize(
prizeId: "prize-1",
type: Gs2Cdk\Lottery\Model\Enums\PrizeType::PRIZE_TABLE,
weight: 5,
options: new \Gs2Cdk\Lottery\Model\Options\PrizeOptions(
prizeTableName: "gacha-ssr",
)
),
new \Gs2Cdk\Lottery\Model\Prize(
prizeId: "prize-2",
type: Gs2Cdk\Lottery\Model\Enums\PrizeType::PRIZE_TABLE,
weight: 15,
options: new \Gs2Cdk\Lottery\Model\Options\PrizeOptions(
prizeTableName: "gacha-sr",
)
),
new \Gs2Cdk\Lottery\Model\Prize(
prizeId: "prize-3",
type: Gs2Cdk\Lottery\Model\Enums\PrizeType::PRIZE_TABLE,
weight: 80,
options: new \Gs2Cdk\Lottery\Model\Options\PrizeOptions(
prizeTableName: "gacha-r",
)
),
],
options: new \Gs2Cdk\Lottery\Model\Options\PrizeTableOptions(
metadata:"SSR"
)
),
new \Gs2Cdk\Lottery\Model\PrizeTable(
name:"gacha-ssr",
prizes:[
new \Gs2Cdk\Lottery\Model\Prize(
prizeId: "prize-4",
type: Gs2Cdk\Lottery\Model\Enums\PrizeType::ACTION,
weight: 1,
options: new \Gs2Cdk\Lottery\Model\Options\PrizeOptions(
acquireActions: [
new \Gs2Cdk\Money\StampSheet\DepositByUserId(
namespaceName: "namespace-0001",
slot: 0,
price: 100,
count: 1,
userId: "#{userId}"
),
],
)
),
new \Gs2Cdk\Lottery\Model\Prize(
prizeId: "prize-5",
type: Gs2Cdk\Lottery\Model\Enums\PrizeType::ACTION,
weight: 2,
options: new \Gs2Cdk\Lottery\Model\Options\PrizeOptions(
acquireActions: [
new \Gs2Cdk\Money\StampSheet\DepositByUserId(
namespaceName: "namespace-0001",
slot: 0,
price: 100,
count: 1,
userId: "#{userId}"
),
],
)
),
new \Gs2Cdk\Lottery\Model\Prize(
prizeId: "prize-6",
type: Gs2Cdk\Lottery\Model\Enums\PrizeType::ACTION,
weight: 3,
options: new \Gs2Cdk\Lottery\Model\Options\PrizeOptions(
acquireActions: [
new \Gs2Cdk\Money\StampSheet\DepositByUserId(
namespaceName: "namespace-0001",
slot: 0,
price: 100,
count: 1,
userId: "#{userId}"
),
],
)
),
],
options: new \Gs2Cdk\Lottery\Model\Options\PrizeTableOptions(
metadata:"SSR"
)
),
new \Gs2Cdk\Lottery\Model\PrizeTable(
name:"gacha-sr",
prizes:[
new \Gs2Cdk\Lottery\Model\Prize(
prizeId: "prize-7",
type: Gs2Cdk\Lottery\Model\Enums\PrizeType::ACTION,
weight: 10,
options: new \Gs2Cdk\Lottery\Model\Options\PrizeOptions(
acquireActions: [
new \Gs2Cdk\Money\StampSheet\DepositByUserId(
namespaceName: "namespace-0001",
slot: 0,
price: 100,
count: 1,
userId: "#{userId}"
),
],
)
),
new \Gs2Cdk\Lottery\Model\Prize(
prizeId: "prize-8",
type: Gs2Cdk\Lottery\Model\Enums\PrizeType::ACTION,
weight: 20,
options: new \Gs2Cdk\Lottery\Model\Options\PrizeOptions(
acquireActions: [
new \Gs2Cdk\Money\StampSheet\DepositByUserId(
namespaceName: "namespace-0001",
slot: 0,
price: 100,
count: 1,
userId: "#{userId}"
),
],
)
),
new \Gs2Cdk\Lottery\Model\Prize(
prizeId: "prize-9",
type: Gs2Cdk\Lottery\Model\Enums\PrizeType::ACTION,
weight: 30,
options: new \Gs2Cdk\Lottery\Model\Options\PrizeOptions(
acquireActions: [
new \Gs2Cdk\Money\StampSheet\DepositByUserId(
namespaceName: "namespace-0001",
slot: 0,
price: 100,
count: 1,
userId: "#{userId}"
),
],
)
),
],
options: new \Gs2Cdk\Lottery\Model\Options\PrizeTableOptions(
metadata:"SR"
)
),
new \Gs2Cdk\Lottery\Model\PrizeTable(
name:"gacha-r",
prizes:[
new \Gs2Cdk\Lottery\Model\Prize(
prizeId: "prize-10",
type: Gs2Cdk\Lottery\Model\Enums\PrizeType::ACTION,
weight: 100,
options: new \Gs2Cdk\Lottery\Model\Options\PrizeOptions(
acquireActions: [
new \Gs2Cdk\Money\StampSheet\DepositByUserId(
namespaceName: "namespace-0001",
slot: 0,
price: 100,
count: 1,
userId: "#{userId}"
),
],
)
),
new \Gs2Cdk\Lottery\Model\Prize(
prizeId: "prize-11",
type: Gs2Cdk\Lottery\Model\Enums\PrizeType::ACTION,
weight: 200,
options: new \Gs2Cdk\Lottery\Model\Options\PrizeOptions(
acquireActions: [
new \Gs2Cdk\Money\StampSheet\DepositByUserId(
namespaceName: "namespace-0001",
slot: 0,
price: 100,
count: 1,
userId: "#{userId}"
),
],
)
),
new \Gs2Cdk\Lottery\Model\Prize(
prizeId: "prize-12",
type: Gs2Cdk\Lottery\Model\Enums\PrizeType::ACTION,
weight: 300,
options: new \Gs2Cdk\Lottery\Model\Options\PrizeOptions(
acquireActions: [
new \Gs2Cdk\Money\StampSheet\DepositByUserId(
namespaceName: "namespace-0001",
slot: 0,
price: 100,
count: 1,
userId: "#{userId}"
),
],
)
),
],
options: new \Gs2Cdk\Lottery\Model\Options\PrizeTableOptions(
metadata:"R"
)
),
new \Gs2Cdk\Lottery\Model\PrizeTable(
name:"box",
prizes:[
new \Gs2Cdk\Lottery\Model\Prize(
prizeId: "prize-13",
type: Gs2Cdk\Lottery\Model\Enums\PrizeType::ACTION,
weight: 30,
options: new \Gs2Cdk\Lottery\Model\Options\PrizeOptions(
acquireActions: [
new \Gs2Cdk\Money\StampSheet\DepositByUserId(
namespaceName: "namespace-0001",
slot: 0,
price: 100,
count: 1,
userId: "#{userId}"
),
],
)
),
new \Gs2Cdk\Lottery\Model\Prize(
prizeId: "prize-14",
type: Gs2Cdk\Lottery\Model\Enums\PrizeType::ACTION,
weight: 20,
options: new \Gs2Cdk\Lottery\Model\Options\PrizeOptions(
acquireActions: [
new \Gs2Cdk\Money\StampSheet\DepositByUserId(
namespaceName: "namespace-0001",
slot: 0,
price: 100,
count: 1,
userId: "#{userId}"
),
],
)
),
new \Gs2Cdk\Lottery\Model\Prize(
prizeId: "prize-15",
type: Gs2Cdk\Lottery\Model\Enums\PrizeType::ACTION,
weight: 10,
options: new \Gs2Cdk\Lottery\Model\Options\PrizeOptions(
acquireActions: [
new \Gs2Cdk\Money\StampSheet\DepositByUserId(
namespaceName: "namespace-0001",
slot: 0,
price: 100,
count: 1,
userId: "#{userId}"
),
],
)
),
],
options: new \Gs2Cdk\Lottery\Model\Options\PrizeTableOptions(
metadata:"BOX"
)
)
]
);
}
}
print((new SampleStack())->yaml()); // Generate Template
class SampleStack extends io.gs2.cdk.core.model.Stack
{
public SampleStack() {
super();
new io.gs2.cdk.lottery.model.Namespace(
this,
"namespace-0001"
).masterData(
Arrays.asList(
new io.gs2.cdk.lottery.model.LotteryModel(
"gacha",
io.gs2.cdk.lottery.model.enums.LotteryModelMode.NORMAL,
io.gs2.cdk.lottery.model.enums.LotteryModelMethod.PRIZE_TABLE,
new io.gs2.cdk.lottery.model.options.LotteryModelOptions()
.withMetadata("GACHA")
.withPrizeTableName("gacha")
),
new io.gs2.cdk.lottery.model.LotteryModel(
"gacha_ssr",
io.gs2.cdk.lottery.model.enums.LotteryModelMode.NORMAL,
io.gs2.cdk.lottery.model.enums.LotteryModelMethod.PRIZE_TABLE,
new io.gs2.cdk.lottery.model.options.LotteryModelOptions()
.withMetadata("SSR")
.withPrizeTableName("gacha-ssr")
),
new io.gs2.cdk.lottery.model.LotteryModel(
"gacha_sr",
io.gs2.cdk.lottery.model.enums.LotteryModelMode.NORMAL,
io.gs2.cdk.lottery.model.enums.LotteryModelMethod.PRIZE_TABLE,
new io.gs2.cdk.lottery.model.options.LotteryModelOptions()
.withMetadata("SR")
.withPrizeTableName("gacha-sr")
),
new io.gs2.cdk.lottery.model.LotteryModel(
"gacha_r",
io.gs2.cdk.lottery.model.enums.LotteryModelMode.NORMAL,
io.gs2.cdk.lottery.model.enums.LotteryModelMethod.PRIZE_TABLE,
new io.gs2.cdk.lottery.model.options.LotteryModelOptions()
.withMetadata("R")
.withPrizeTableName("gacha-r")
),
new io.gs2.cdk.lottery.model.LotteryModel(
"box",
io.gs2.cdk.lottery.model.enums.LotteryModelMode.BOX,
io.gs2.cdk.lottery.model.enums.LotteryModelMethod.PRIZE_TABLE,
new io.gs2.cdk.lottery.model.options.LotteryModelOptions()
.withMetadata("BOX")
.withPrizeTableName("box")
)
),
Arrays.asList(
new io.gs2.cdk.lottery.model.PrizeTable(
"gacha",
Arrays.asList(
new io.gs2.cdk.lottery.model.Prize(
"prize-1",
io.gs2.cdk.lottery.model.enums.PrizeType.PRIZE_TABLE,
5,
new io.gs2.cdk.lottery.model.options.PrizeOptions()
.withPrizeTableName("gacha-ssr")
),
new io.gs2.cdk.lottery.model.Prize(
"prize-2",
io.gs2.cdk.lottery.model.enums.PrizeType.PRIZE_TABLE,
15,
new io.gs2.cdk.lottery.model.options.PrizeOptions()
.withPrizeTableName("gacha-sr")
),
new io.gs2.cdk.lottery.model.Prize(
"prize-3",
io.gs2.cdk.lottery.model.enums.PrizeType.PRIZE_TABLE,
80,
new io.gs2.cdk.lottery.model.options.PrizeOptions()
.withPrizeTableName("gacha-r")
)
),
new io.gs2.cdk.lottery.model.options.PrizeTableOptions()
.withMetadata("SSR")
),
new io.gs2.cdk.lottery.model.PrizeTable(
"gacha-ssr",
Arrays.asList(
new io.gs2.cdk.lottery.model.Prize(
"prize-4",
io.gs2.cdk.lottery.model.enums.PrizeType.ACTION,
1,
new io.gs2.cdk.lottery.model.options.PrizeOptions()
.withAcquireActions(Arrays.asList(
new io.gs2.cdk.money.stampSheet.DepositByUserId(
"namespace-0001",
0,
100f,
1,
"#{userId}"
)
))
),
new io.gs2.cdk.lottery.model.Prize(
"prize-5",
io.gs2.cdk.lottery.model.enums.PrizeType.ACTION,
2,
new io.gs2.cdk.lottery.model.options.PrizeOptions()
.withAcquireActions(Arrays.asList(
new io.gs2.cdk.money.stampSheet.DepositByUserId(
"namespace-0001",
0,
100f,
1,
"#{userId}"
)
))
),
new io.gs2.cdk.lottery.model.Prize(
"prize-6",
io.gs2.cdk.lottery.model.enums.PrizeType.ACTION,
3,
new io.gs2.cdk.lottery.model.options.PrizeOptions()
.withAcquireActions(Arrays.asList(
new io.gs2.cdk.money.stampSheet.DepositByUserId(
"namespace-0001",
0,
100f,
1,
"#{userId}"
)
))
)
),
new io.gs2.cdk.lottery.model.options.PrizeTableOptions()
.withMetadata("SSR")
),
new io.gs2.cdk.lottery.model.PrizeTable(
"gacha-sr",
Arrays.asList(
new io.gs2.cdk.lottery.model.Prize(
"prize-7",
io.gs2.cdk.lottery.model.enums.PrizeType.ACTION,
10,
new io.gs2.cdk.lottery.model.options.PrizeOptions()
.withAcquireActions(Arrays.asList(
new io.gs2.cdk.money.stampSheet.DepositByUserId(
"namespace-0001",
0,
100f,
1,
"#{userId}"
)
))
),
new io.gs2.cdk.lottery.model.Prize(
"prize-8",
io.gs2.cdk.lottery.model.enums.PrizeType.ACTION,
20,
new io.gs2.cdk.lottery.model.options.PrizeOptions()
.withAcquireActions(Arrays.asList(
new io.gs2.cdk.money.stampSheet.DepositByUserId(
"namespace-0001",
0,
100f,
1,
"#{userId}"
)
))
),
new io.gs2.cdk.lottery.model.Prize(
"prize-9",
io.gs2.cdk.lottery.model.enums.PrizeType.ACTION,
30,
new io.gs2.cdk.lottery.model.options.PrizeOptions()
.withAcquireActions(Arrays.asList(
new io.gs2.cdk.money.stampSheet.DepositByUserId(
"namespace-0001",
0,
100f,
1,
"#{userId}"
)
))
)
),
new io.gs2.cdk.lottery.model.options.PrizeTableOptions()
.withMetadata("SR")
),
new io.gs2.cdk.lottery.model.PrizeTable(
"gacha-r",
Arrays.asList(
new io.gs2.cdk.lottery.model.Prize(
"prize-10",
io.gs2.cdk.lottery.model.enums.PrizeType.ACTION,
100,
new io.gs2.cdk.lottery.model.options.PrizeOptions()
.withAcquireActions(Arrays.asList(
new io.gs2.cdk.money.stampSheet.DepositByUserId(
"namespace-0001",
0,
100f,
1,
"#{userId}"
)
))
),
new io.gs2.cdk.lottery.model.Prize(
"prize-11",
io.gs2.cdk.lottery.model.enums.PrizeType.ACTION,
200,
new io.gs2.cdk.lottery.model.options.PrizeOptions()
.withAcquireActions(Arrays.asList(
new io.gs2.cdk.money.stampSheet.DepositByUserId(
"namespace-0001",
0,
100f,
1,
"#{userId}"
)
))
),
new io.gs2.cdk.lottery.model.Prize(
"prize-12",
io.gs2.cdk.lottery.model.enums.PrizeType.ACTION,
300,
new io.gs2.cdk.lottery.model.options.PrizeOptions()
.withAcquireActions(Arrays.asList(
new io.gs2.cdk.money.stampSheet.DepositByUserId(
"namespace-0001",
0,
100f,
1,
"#{userId}"
)
))
)
),
new io.gs2.cdk.lottery.model.options.PrizeTableOptions()
.withMetadata("R")
),
new io.gs2.cdk.lottery.model.PrizeTable(
"box",
Arrays.asList(
new io.gs2.cdk.lottery.model.Prize(
"prize-13",
io.gs2.cdk.lottery.model.enums.PrizeType.ACTION,
30,
new io.gs2.cdk.lottery.model.options.PrizeOptions()
.withAcquireActions(Arrays.asList(
new io.gs2.cdk.money.stampSheet.DepositByUserId(
"namespace-0001",
0,
100f,
1,
"#{userId}"
)
))
),
new io.gs2.cdk.lottery.model.Prize(
"prize-14",
io.gs2.cdk.lottery.model.enums.PrizeType.ACTION,
20,
new io.gs2.cdk.lottery.model.options.PrizeOptions()
.withAcquireActions(Arrays.asList(
new io.gs2.cdk.money.stampSheet.DepositByUserId(
"namespace-0001",
0,
100f,
1,
"#{userId}"
)
))
),
new io.gs2.cdk.lottery.model.Prize(
"prize-15",
io.gs2.cdk.lottery.model.enums.PrizeType.ACTION,
10,
new io.gs2.cdk.lottery.model.options.PrizeOptions()
.withAcquireActions(Arrays.asList(
new io.gs2.cdk.money.stampSheet.DepositByUserId(
"namespace-0001",
0,
100f,
1,
"#{userId}"
)
))
)
),
new io.gs2.cdk.lottery.model.options.PrizeTableOptions()
.withMetadata("BOX")
)
)
);
}
}
System.out.println(new SampleStack().yaml()); // Generate Templatepublic class SampleStack : Gs2Cdk.Core.Model.Stack
{
public SampleStack() {
new Gs2Cdk.Gs2Lottery.Model.Namespace(
stack: this,
name: "namespace-0001"
).MasterData(
new Gs2Cdk.Gs2Lottery.Model.LotteryModel[] {
new Gs2Cdk.Gs2Lottery.Model.LotteryModel(
name: "gacha",
mode: Gs2Cdk.Gs2Lottery.Model.Enums.LotteryModelMode.Normal,
method: Gs2Cdk.Gs2Lottery.Model.Enums.LotteryModelMethod.PrizeTable,
options: new Gs2Cdk.Gs2Lottery.Model.Options.LotteryModelOptions
{
metadata = "GACHA",
prizeTableName = "gacha"
}
),
new Gs2Cdk.Gs2Lottery.Model.LotteryModel(
name: "gacha_ssr",
mode: Gs2Cdk.Gs2Lottery.Model.Enums.LotteryModelMode.Normal,
method: Gs2Cdk.Gs2Lottery.Model.Enums.LotteryModelMethod.PrizeTable,
options: new Gs2Cdk.Gs2Lottery.Model.Options.LotteryModelOptions
{
metadata = "SSR",
prizeTableName = "gacha-ssr"
}
),
new Gs2Cdk.Gs2Lottery.Model.LotteryModel(
name: "gacha_sr",
mode: Gs2Cdk.Gs2Lottery.Model.Enums.LotteryModelMode.Normal,
method: Gs2Cdk.Gs2Lottery.Model.Enums.LotteryModelMethod.PrizeTable,
options: new Gs2Cdk.Gs2Lottery.Model.Options.LotteryModelOptions
{
metadata = "SR",
prizeTableName = "gacha-sr"
}
),
new Gs2Cdk.Gs2Lottery.Model.LotteryModel(
name: "gacha_r",
mode: Gs2Cdk.Gs2Lottery.Model.Enums.LotteryModelMode.Normal,
method: Gs2Cdk.Gs2Lottery.Model.Enums.LotteryModelMethod.PrizeTable,
options: new Gs2Cdk.Gs2Lottery.Model.Options.LotteryModelOptions
{
metadata = "R",
prizeTableName = "gacha-r"
}
),
new Gs2Cdk.Gs2Lottery.Model.LotteryModel(
name: "box",
mode: Gs2Cdk.Gs2Lottery.Model.Enums.LotteryModelMode.Box,
method: Gs2Cdk.Gs2Lottery.Model.Enums.LotteryModelMethod.PrizeTable,
options: new Gs2Cdk.Gs2Lottery.Model.Options.LotteryModelOptions
{
metadata = "BOX",
prizeTableName = "box"
}
)
},
new Gs2Cdk.Gs2Lottery.Model.PrizeTable[] {
new Gs2Cdk.Gs2Lottery.Model.PrizeTable(
name: "gacha",
prizes: new Gs2Cdk.Gs2Lottery.Model.Prize[]
{
new Gs2Cdk.Gs2Lottery.Model.Prize(
prizeId: "prize-1",
type: Gs2Cdk.Gs2Lottery.Model.Enums.PrizeType.PrizeTable,
weight: 5,
options: new Gs2Cdk.Gs2Lottery.Model.Options.PrizeOptions
{
prizeTableName = "gacha-ssr"
}
),
new Gs2Cdk.Gs2Lottery.Model.Prize(
prizeId: "prize-2",
type: Gs2Cdk.Gs2Lottery.Model.Enums.PrizeType.PrizeTable,
weight: 15,
options: new Gs2Cdk.Gs2Lottery.Model.Options.PrizeOptions
{
prizeTableName = "gacha-sr"
}
),
new Gs2Cdk.Gs2Lottery.Model.Prize(
prizeId: "prize-3",
type: Gs2Cdk.Gs2Lottery.Model.Enums.PrizeType.PrizeTable,
weight: 80,
options: new Gs2Cdk.Gs2Lottery.Model.Options.PrizeOptions
{
prizeTableName = "gacha-r"
}
)
},
options: new Gs2Cdk.Gs2Lottery.Model.Options.PrizeTableOptions
{
metadata = "SSR"
}
),
new Gs2Cdk.Gs2Lottery.Model.PrizeTable(
name: "gacha-ssr",
prizes: new Gs2Cdk.Gs2Lottery.Model.Prize[]
{
new Gs2Cdk.Gs2Lottery.Model.Prize(
prizeId: "prize-4",
type: Gs2Cdk.Gs2Lottery.Model.Enums.PrizeType.Action,
weight: 1,
options: new Gs2Cdk.Gs2Lottery.Model.Options.PrizeOptions
{
acquireActions = new Gs2Cdk.Core.Model.AcquireAction[]
{
new Gs2Cdk.Gs2Money.StampSheet.DepositByUserId(
namespaceName: "namespace-0001",
slot: 0,
price: 100,
count: 1,
userId: "#{userId}"
)
}
}
),
new Gs2Cdk.Gs2Lottery.Model.Prize(
prizeId: "prize-5",
type: Gs2Cdk.Gs2Lottery.Model.Enums.PrizeType.Action,
weight: 2,
options: new Gs2Cdk.Gs2Lottery.Model.Options.PrizeOptions
{
acquireActions = new Gs2Cdk.Core.Model.AcquireAction[]
{
new Gs2Cdk.Gs2Money.StampSheet.DepositByUserId(
namespaceName: "namespace-0001",
slot: 0,
price: 100,
count: 1,
userId: "#{userId}"
)
}
}
),
new Gs2Cdk.Gs2Lottery.Model.Prize(
prizeId: "prize-6",
type: Gs2Cdk.Gs2Lottery.Model.Enums.PrizeType.Action,
weight: 3,
options: new Gs2Cdk.Gs2Lottery.Model.Options.PrizeOptions
{
acquireActions = new Gs2Cdk.Core.Model.AcquireAction[]
{
new Gs2Cdk.Gs2Money.StampSheet.DepositByUserId(
namespaceName: "namespace-0001",
slot: 0,
price: 100,
count: 1,
userId: "#{userId}"
)
}
}
)
},
options: new Gs2Cdk.Gs2Lottery.Model.Options.PrizeTableOptions
{
metadata = "SSR"
}
),
new Gs2Cdk.Gs2Lottery.Model.PrizeTable(
name: "gacha-sr",
prizes: new Gs2Cdk.Gs2Lottery.Model.Prize[]
{
new Gs2Cdk.Gs2Lottery.Model.Prize(
prizeId: "prize-7",
type: Gs2Cdk.Gs2Lottery.Model.Enums.PrizeType.Action,
weight: 10,
options: new Gs2Cdk.Gs2Lottery.Model.Options.PrizeOptions
{
acquireActions = new Gs2Cdk.Core.Model.AcquireAction[]
{
new Gs2Cdk.Gs2Money.StampSheet.DepositByUserId(
namespaceName: "namespace-0001",
slot: 0,
price: 100,
count: 1,
userId: "#{userId}"
)
}
}
),
new Gs2Cdk.Gs2Lottery.Model.Prize(
prizeId: "prize-8",
type: Gs2Cdk.Gs2Lottery.Model.Enums.PrizeType.Action,
weight: 20,
options: new Gs2Cdk.Gs2Lottery.Model.Options.PrizeOptions
{
acquireActions = new Gs2Cdk.Core.Model.AcquireAction[]
{
new Gs2Cdk.Gs2Money.StampSheet.DepositByUserId(
namespaceName: "namespace-0001",
slot: 0,
price: 100,
count: 1,
userId: "#{userId}"
)
}
}
),
new Gs2Cdk.Gs2Lottery.Model.Prize(
prizeId: "prize-9",
type: Gs2Cdk.Gs2Lottery.Model.Enums.PrizeType.Action,
weight: 30,
options: new Gs2Cdk.Gs2Lottery.Model.Options.PrizeOptions
{
acquireActions = new Gs2Cdk.Core.Model.AcquireAction[]
{
new Gs2Cdk.Gs2Money.StampSheet.DepositByUserId(
namespaceName: "namespace-0001",
slot: 0,
price: 100,
count: 1,
userId: "#{userId}"
)
}
}
)
},
options: new Gs2Cdk.Gs2Lottery.Model.Options.PrizeTableOptions
{
metadata = "SR"
}
),
new Gs2Cdk.Gs2Lottery.Model.PrizeTable(
name: "gacha-r",
prizes: new Gs2Cdk.Gs2Lottery.Model.Prize[]
{
new Gs2Cdk.Gs2Lottery.Model.Prize(
prizeId: "prize-10",
type: Gs2Cdk.Gs2Lottery.Model.Enums.PrizeType.Action,
weight: 100,
options: new Gs2Cdk.Gs2Lottery.Model.Options.PrizeOptions
{
acquireActions = new Gs2Cdk.Core.Model.AcquireAction[]
{
new Gs2Cdk.Gs2Money.StampSheet.DepositByUserId(
namespaceName: "namespace-0001",
slot: 0,
price: 100,
count: 1,
userId: "#{userId}"
)
}
}
),
new Gs2Cdk.Gs2Lottery.Model.Prize(
prizeId: "prize-11",
type: Gs2Cdk.Gs2Lottery.Model.Enums.PrizeType.Action,
weight: 200,
options: new Gs2Cdk.Gs2Lottery.Model.Options.PrizeOptions
{
acquireActions = new Gs2Cdk.Core.Model.AcquireAction[]
{
new Gs2Cdk.Gs2Money.StampSheet.DepositByUserId(
namespaceName: "namespace-0001",
slot: 0,
price: 100,
count: 1,
userId: "#{userId}"
)
}
}
),
new Gs2Cdk.Gs2Lottery.Model.Prize(
prizeId: "prize-12",
type: Gs2Cdk.Gs2Lottery.Model.Enums.PrizeType.Action,
weight: 300,
options: new Gs2Cdk.Gs2Lottery.Model.Options.PrizeOptions
{
acquireActions = new Gs2Cdk.Core.Model.AcquireAction[]
{
new Gs2Cdk.Gs2Money.StampSheet.DepositByUserId(
namespaceName: "namespace-0001",
slot: 0,
price: 100,
count: 1,
userId: "#{userId}"
)
}
}
)
},
options: new Gs2Cdk.Gs2Lottery.Model.Options.PrizeTableOptions
{
metadata = "R"
}
),
new Gs2Cdk.Gs2Lottery.Model.PrizeTable(
name: "box",
prizes: new Gs2Cdk.Gs2Lottery.Model.Prize[]
{
new Gs2Cdk.Gs2Lottery.Model.Prize(
prizeId: "prize-13",
type: Gs2Cdk.Gs2Lottery.Model.Enums.PrizeType.Action,
weight: 30,
options: new Gs2Cdk.Gs2Lottery.Model.Options.PrizeOptions
{
acquireActions = new Gs2Cdk.Core.Model.AcquireAction[]
{
new Gs2Cdk.Gs2Money.StampSheet.DepositByUserId(
namespaceName: "namespace-0001",
slot: 0,
price: 100,
count: 1,
userId: "#{userId}"
)
}
}
),
new Gs2Cdk.Gs2Lottery.Model.Prize(
prizeId: "prize-14",
type: Gs2Cdk.Gs2Lottery.Model.Enums.PrizeType.Action,
weight: 20,
options: new Gs2Cdk.Gs2Lottery.Model.Options.PrizeOptions
{
acquireActions = new Gs2Cdk.Core.Model.AcquireAction[]
{
new Gs2Cdk.Gs2Money.StampSheet.DepositByUserId(
namespaceName: "namespace-0001",
slot: 0,
price: 100,
count: 1,
userId: "#{userId}"
)
}
}
),
new Gs2Cdk.Gs2Lottery.Model.Prize(
prizeId: "prize-15",
type: Gs2Cdk.Gs2Lottery.Model.Enums.PrizeType.Action,
weight: 10,
options: new Gs2Cdk.Gs2Lottery.Model.Options.PrizeOptions
{
acquireActions = new Gs2Cdk.Core.Model.AcquireAction[]
{
new Gs2Cdk.Gs2Money.StampSheet.DepositByUserId(
namespaceName: "namespace-0001",
slot: 0,
price: 100,
count: 1,
userId: "#{userId}"
)
}
}
)
},
options: new Gs2Cdk.Gs2Lottery.Model.Options.PrizeTableOptions
{
metadata = "BOX"
}
)
}
);
}
}
Debug.Log(new SampleStack().Yaml()); // Generate Templateimport core from "@/gs2cdk/core";
import lottery from "@/gs2cdk/lottery";
class SampleStack extends core.Stack
{
public constructor() {
super();
new lottery.model.Namespace(
this,
"namespace-0001",
).masterData(
[
new lottery.model.LotteryModel(
"gacha",
lottery.model.LotteryModelMode.NORMAL,
lottery.model.LotteryModelMethod.PRIZE_TABLE,
{
metadata: "GACHA",
prizeTableName: "gacha"
}
),
new lottery.model.LotteryModel(
"gacha_ssr",
lottery.model.LotteryModelMode.NORMAL,
lottery.model.LotteryModelMethod.PRIZE_TABLE,
{
metadata: "SSR",
prizeTableName: "gacha-ssr"
}
),
new lottery.model.LotteryModel(
"gacha_sr",
lottery.model.LotteryModelMode.NORMAL,
lottery.model.LotteryModelMethod.PRIZE_TABLE,
{
metadata: "SR",
prizeTableName: "gacha-sr"
}
),
new lottery.model.LotteryModel(
"gacha_r",
lottery.model.LotteryModelMode.NORMAL,
lottery.model.LotteryModelMethod.PRIZE_TABLE,
{
metadata: "R",
prizeTableName: "gacha-r"
}
),
new lottery.model.LotteryModel(
"box",
lottery.model.LotteryModelMode.BOX,
lottery.model.LotteryModelMethod.PRIZE_TABLE,
{
metadata: "BOX",
prizeTableName: "box"
}
)
],
[
new lottery.model.PrizeTable(
"gacha",
[
new lottery.model.Prize(
"prize-1",
lottery.model.PrizeType.PRIZE_TABLE,
5,
{
prizeTableName: "gacha-ssr"
}
),
new lottery.model.Prize(
"prize-2",
lottery.model.PrizeType.PRIZE_TABLE,
15,
{
prizeTableName: "gacha-sr"
}
),
new lottery.model.Prize(
"prize-3",
lottery.model.PrizeType.PRIZE_TABLE,
80,
{
prizeTableName: "gacha-r"
}
),
],
{
metadata: "SSR"
}
),
new lottery.model.PrizeTable(
"gacha-ssr",
[
new lottery.model.Prize(
"prize-4",
lottery.model.PrizeType.ACTION,
1,
{
acquireActions: [
new money.stampSheet.DepositByUserId(
"namespace-0001",
0,
100,
1,
"#{userId}"
),
]
}
),
new lottery.model.Prize(
"prize-5",
lottery.model.PrizeType.ACTION,
2,
{
acquireActions: [
new money.stampSheet.DepositByUserId(
"namespace-0001",
0,
100,
1,
"#{userId}"
),
]
}
),
new lottery.model.Prize(
"prize-6",
lottery.model.PrizeType.ACTION,
3,
{
acquireActions: [
new money.stampSheet.DepositByUserId(
"namespace-0001",
0,
100,
1,
"#{userId}"
),
]
}
),
],
{
metadata: "SSR"
}
),
new lottery.model.PrizeTable(
"gacha-sr",
[
new lottery.model.Prize(
"prize-7",
lottery.model.PrizeType.ACTION,
10,
{
acquireActions: [
new money.stampSheet.DepositByUserId(
"namespace-0001",
0,
100,
1,
"#{userId}"
),
]
}
),
new lottery.model.Prize(
"prize-8",
lottery.model.PrizeType.ACTION,
20,
{
acquireActions: [
new money.stampSheet.DepositByUserId(
"namespace-0001",
0,
100,
1,
"#{userId}"
),
]
}
),
new lottery.model.Prize(
"prize-9",
lottery.model.PrizeType.ACTION,
30,
{
acquireActions: [
new money.stampSheet.DepositByUserId(
"namespace-0001",
0,
100,
1,
"#{userId}"
),
]
}
),
],
{
metadata: "SR"
}
),
new lottery.model.PrizeTable(
"gacha-r",
[
new lottery.model.Prize(
"prize-10",
lottery.model.PrizeType.ACTION,
100,
{
acquireActions: [
new money.stampSheet.DepositByUserId(
"namespace-0001",
0,
100,
1,
"#{userId}"
),
]
}
),
new lottery.model.Prize(
"prize-11",
lottery.model.PrizeType.ACTION,
200,
{
acquireActions: [
new money.stampSheet.DepositByUserId(
"namespace-0001",
0,
100,
1,
"#{userId}"
),
]
}
),
new lottery.model.Prize(
"prize-12",
lottery.model.PrizeType.ACTION,
300,
{
acquireActions: [
new money.stampSheet.DepositByUserId(
"namespace-0001",
0,
100,
1,
"#{userId}"
),
]
}
),
],
{
metadata: "R"
}
),
new lottery.model.PrizeTable(
"box",
[
new lottery.model.Prize(
"prize-13",
lottery.model.PrizeType.ACTION,
30,
{
acquireActions: [
new money.stampSheet.DepositByUserId(
"namespace-0001",
0,
100,
1,
"#{userId}"
),
]
}
),
new lottery.model.Prize(
"prize-14",
lottery.model.PrizeType.ACTION,
20,
{
acquireActions: [
new money.stampSheet.DepositByUserId(
"namespace-0001",
0,
100,
1,
"#{userId}"
),
]
}
),
new lottery.model.Prize(
"prize-15",
lottery.model.PrizeType.ACTION,
10,
{
acquireActions: [
new money.stampSheet.DepositByUserId(
"namespace-0001",
0,
100,
1,
"#{userId}"
),
]
}
),
],
{
metadata: "BOX"
}
)
]
);
}
}
console.log(new SampleStack().yaml()); // Generate Template
from gs2_cdk import Stack, core, lottery
class SampleStack(Stack):
def __init__(self):
super().__init__()
lottery.Namespace(
stack=self,
name="namespace-0001",
).master_data(
lottery_models=[
lottery.LotteryModel(
name='gacha',
mode=lottery.LotteryModelMode.NORMAL,
method=lottery.LotteryModelMethod.PRIZE_TABLE,
options=lottery.LotteryModelOptions(
metadata = 'GACHA',
prize_table_name = 'gacha'
),
),
lottery.LotteryModel(
name='gacha_ssr',
mode=lottery.LotteryModelMode.NORMAL,
method=lottery.LotteryModelMethod.PRIZE_TABLE,
options=lottery.LotteryModelOptions(
metadata = 'SSR',
prize_table_name = 'gacha-ssr'
),
),
lottery.LotteryModel(
name='gacha_sr',
mode=lottery.LotteryModelMode.NORMAL,
method=lottery.LotteryModelMethod.PRIZE_TABLE,
options=lottery.LotteryModelOptions(
metadata = 'SR',
prize_table_name = 'gacha-sr'
),
),
lottery.LotteryModel(
name='gacha_r',
mode=lottery.LotteryModelMode.NORMAL,
method=lottery.LotteryModelMethod.PRIZE_TABLE,
options=lottery.LotteryModelOptions(
metadata = 'R',
prize_table_name = 'gacha-r'
),
),
lottery.LotteryModel(
name='box',
mode=lottery.LotteryModelMode.BOX,
method=lottery.LotteryModelMethod.PRIZE_TABLE,
options=lottery.LotteryModelOptions(
metadata = 'BOX',
prize_table_name = 'box'
),
),
],
prize_tables=[
lottery.PrizeTable(
name='gacha',
prizes=[
lottery.Prize(
prize_id='prize-1',
type=lottery.PrizeType.PRIZE_TABLE,
weight=5,
options=lottery.PrizeOptions(
prize_table_name='gacha-ssr',
),
),
lottery.Prize(
prize_id='prize-2',
type=lottery.PrizeType.PRIZE_TABLE,
weight=15,
options=lottery.PrizeOptions(
prize_table_name='gacha-sr',
),
),
lottery.Prize(
prize_id='prize-3',
type=lottery.PrizeType.PRIZE_TABLE,
weight=80,
options=lottery.PrizeOptions(
prize_table_name='gacha-r',
),
),
],
options=lottery.PrizeTableOptions(
metadata = 'SSR'
),
),
lottery.PrizeTable(
name='gacha-ssr',
prizes=[
lottery.Prize(
prize_id='prize-4',
type=lottery.PrizeType.ACTION,
weight=1,
options=lottery.PrizeOptions(
acquire_actions=[
money.DepositByUserId(
namespace_name='namespace-0001',
slot=0,
price=100,
count=1,
user_id='#{userId}'
),
],
),
),
lottery.Prize(
prize_id='prize-5',
type=lottery.PrizeType.ACTION,
weight=2,
options=lottery.PrizeOptions(
acquire_actions=[
money.DepositByUserId(
namespace_name='namespace-0001',
slot=0,
price=100,
count=1,
user_id='#{userId}'
),
],
),
),
lottery.Prize(
prize_id='prize-6',
type=lottery.PrizeType.ACTION,
weight=3,
options=lottery.PrizeOptions(
acquire_actions=[
money.DepositByUserId(
namespace_name='namespace-0001',
slot=0,
price=100,
count=1,
user_id='#{userId}'
),
],
),
),
],
options=lottery.PrizeTableOptions(
metadata = 'SSR'
),
),
lottery.PrizeTable(
name='gacha-sr',
prizes=[
lottery.Prize(
prize_id='prize-7',
type=lottery.PrizeType.ACTION,
weight=10,
options=lottery.PrizeOptions(
acquire_actions=[
money.DepositByUserId(
namespace_name='namespace-0001',
slot=0,
price=100,
count=1,
user_id='#{userId}'
),
],
),
),
lottery.Prize(
prize_id='prize-8',
type=lottery.PrizeType.ACTION,
weight=20,
options=lottery.PrizeOptions(
acquire_actions=[
money.DepositByUserId(
namespace_name='namespace-0001',
slot=0,
price=100,
count=1,
user_id='#{userId}'
),
],
),
),
lottery.Prize(
prize_id='prize-9',
type=lottery.PrizeType.ACTION,
weight=30,
options=lottery.PrizeOptions(
acquire_actions=[
money.DepositByUserId(
namespace_name='namespace-0001',
slot=0,
price=100,
count=1,
user_id='#{userId}'
),
],
),
),
],
options=lottery.PrizeTableOptions(
metadata = 'SR'
),
),
lottery.PrizeTable(
name='gacha-r',
prizes=[
lottery.Prize(
prize_id='prize-10',
type=lottery.PrizeType.ACTION,
weight=100,
options=lottery.PrizeOptions(
acquire_actions=[
money.DepositByUserId(
namespace_name='namespace-0001',
slot=0,
price=100,
count=1,
user_id='#{userId}'
),
],
),
),
lottery.Prize(
prize_id='prize-11',
type=lottery.PrizeType.ACTION,
weight=200,
options=lottery.PrizeOptions(
acquire_actions=[
money.DepositByUserId(
namespace_name='namespace-0001',
slot=0,
price=100,
count=1,
user_id='#{userId}'
),
],
),
),
lottery.Prize(
prize_id='prize-12',
type=lottery.PrizeType.ACTION,
weight=300,
options=lottery.PrizeOptions(
acquire_actions=[
money.DepositByUserId(
namespace_name='namespace-0001',
slot=0,
price=100,
count=1,
user_id='#{userId}'
),
],
),
),
],
options=lottery.PrizeTableOptions(
metadata = 'R'
),
),
lottery.PrizeTable(
name='box',
prizes=[
lottery.Prize(
prize_id='prize-13',
type=lottery.PrizeType.ACTION,
weight=30,
options=lottery.PrizeOptions(
acquire_actions=[
money.DepositByUserId(
namespace_name='namespace-0001',
slot=0,
price=100,
count=1,
user_id='#{userId}'
),
],
),
),
lottery.Prize(
prize_id='prize-14',
type=lottery.PrizeType.ACTION,
weight=20,
options=lottery.PrizeOptions(
acquire_actions=[
money.DepositByUserId(
namespace_name='namespace-0001',
slot=0,
price=100,
count=1,
user_id='#{userId}'
),
],
),
),
lottery.Prize(
prize_id='prize-15',
type=lottery.PrizeType.ACTION,
weight=10,
options=lottery.PrizeOptions(
acquire_actions=[
money.DepositByUserId(
namespace_name='namespace-0001',
slot=0,
price=100,
count=1,
user_id='#{userId}'
),
],
),
),
],
options=lottery.PrizeTableOptions(
metadata = 'BOX'
),
),
],
)
print(SampleStack().yaml()) # Generate TemplateProbability
Probability
| Type | Condition | Require | Default | Limitation | Description | |
|---|---|---|---|---|---|---|
| prize | DrawnPrize | ✓ | Type of prize | |||
| rate | float | ✓ | 0 ~ 1.0 | Emission probability (0.0-1.0) |
Prize
Prize
| Type | Condition | Require | Default | Limitation | Description | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| prizeId | string | ✓ | UUID | ~ 36 chars | Prize ID | |||||||
| type | String Enum enum { “action”, “prize_table” } | ✓ | ~ 128 chars | Type of prize
| ||||||||
| acquireActions | List<AcquireAction> | {type} == “action” | ✓ | [] | 1 ~ 100 items | List of Acquire Action If type is “action”, then required | ||||||
| drawnLimit | int | {type} == “action” | 1 ~ 100000 | Maximum number of draws If type is “action”, then enabled | ||||||||
| limitFailOverPrizeId | string | {type} == “action” and {drawnLimit} > 0 | ✓ | ~ 32 chars | Prize ID to be discharged instead when the maximum number of drawn has been reached. If type is “action”, then required | |||||||
| prizeTableName | string | {type} == “prize_table” | ✓ | ~ 128 chars | Name of prize table If type is “prize_table”, then required | |||||||
| weight | int | ✓ | 1 ~ 2147483646 | Emission Weight |
DrawnPrize
Types of prizes
| Type | Condition | Require | Default | Limitation | Description | |
|---|---|---|---|---|---|---|
| prizeId | string | ✓ | ~ 36 chars | Prize ID | ||
| acquireActions | List<AcquireAction> | 0 ~ 100 items | List of Acquire Actions |
BoxItem
Item taken out of the lottery box
| Type | Condition | Require | Default | Limitation | Description | |
|---|---|---|---|---|---|---|
| prizeId | string | ✓ | ~ 128 chars | Prize Id | ||
| acquireActions | List<AcquireAction> | [] | 0 ~ 100 items | List of Acquire Action | ||
| remaining | int | ✓ | 0 ~ 2147483646 | Remaining quantity | ||
| initial | int | ✓ | 0 ~ 2147483646 | Initial quantity |
AcquireAction
Acquire Action
Config
Configuration
Set values to be applied to transaction variables
| Type | Condition | Require | Default | Limitation | Description | |
|---|---|---|---|---|---|---|
| key | string | ✓ | ~ 64 chars | Name | ||
| value | string | ~ 51200 chars | Value |
VerifyActionResult
Verify action execution result
ConsumeActionResult
Consume action execution result
AcquireActionResult
Acquire action execution result
TransactionResult
Transaction execution results
Transaction execution results executed using server-side transaction auto-execution functionality
| Type | Condition | Require | Default | Limitation | Description | |
|---|---|---|---|---|---|---|
| transactionId | string | ✓ | 36 ~ 36 chars | Transaction ID | ||
| verifyResults | List<VerifyActionResult> | 0 ~ 10 items | List of verify action execution results | |||
| consumeResults | List<ConsumeActionResult> | [] | 0 ~ 10 items | List of consume action execution results | ||
| acquireResults | List<AcquireActionResult> | [] | 0 ~ 100 items | List of acquire action execution results | ||
| hasError | bool | ✓ | false | Whether an error occurred during transaction execution |
GitHubCheckoutSetting
Setup to check out master data from GitHub
| Type | Condition | Require | Default | Limitation | Description | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| apiKeyId | string | ✓ | ~ 1024 chars | GitHub API key GRN | ||||||||||
| repositoryName | string | ✓ | ~ 1024 chars | Repository Name | ||||||||||
| sourcePath | string | ✓ | ~ 1024 chars | Source code file path | ||||||||||
| referenceType | String Enum enum { “commit_hash”, “branch”, “tag” } | ✓ | ~ 128 chars | Source of code
| ||||||||||
| commitHash | string | {referenceType} == “commit_hash” | ✓ | ~ 1024 chars | Commit hash If referenceType is “commit_hash”, then required | |||||||||
| branchName | string | {referenceType} == “branch” | ✓ | ~ 1024 chars | Branch Name If referenceType is “branch”, then required | |||||||||
| tagName | string | {referenceType} == “tag” | ✓ | ~ 1024 chars | Tag Name If referenceType is “tag”, then required |
LogSetting
Log setting
This type manages log output settings. This type holds the identifier of the log namespace used to output log data. The log namespace ID specifies the GS2-Log namespace to aggregate and store the log data. Through this setting, API request and response log data under this namespace will be output to the target GS2-Log. GS2-Log provides logs in real time, which can be used for system monitoring, analysis, debugging, etc.
| Type | Condition | Require | Default | Limitation | Description | |
|---|---|---|---|---|---|---|
| loggingNamespaceId | string | ✓ | ~ 1024 chars | GS2-Log namespace GRN to output logs |
TransactionSetting
Transaction settings
| Type | Condition | Require | Default | Limitation | Description | |
|---|---|---|---|---|---|---|
| enableAutoRun | bool | ✓ | false | Whether to automatically execute issued transactions on the server side | ||
| enableAtomicCommit | bool | {enableAutoRun} == true | ✓ | false | Whether to commit the execution of transactions atomically If enableAutoRun is true, then required | |
| transactionUseDistributor | bool | {enableAtomicCommit} == true | ✓ | false | Whether to execute transactions asynchronously If enableAtomicCommit is true, then required | |
| commitScriptResultInUseDistributor | bool | {transactionUseDistributor} == true | ✓ | false | Whether to execute the commit processing of the script result asynchronously If transactionUseDistributor is true, then required | |
| acquireActionUseJobQueue | bool | {enableAtomicCommit} == true | ✓ | false | Whether to use GS2-JobQueue to execute the acquire action If enableAtomicCommit is true, then required | |
| distributorNamespaceId | string | ✓ | “grn:gs2:{region}:{ownerId}:distributor:default” | ~ 1024 chars | GS2-Distributor namespace used for transaction execution | |
| queueNamespaceId | string | ✓ | “grn:gs2:{region}:{ownerId}:queue:default” | ~ 1024 chars | Namespace in GS2-JobQueue used to run the transaction |