Skip to content

Commit f927280

Browse files
committed
Merge account check function
- add IsNeedCheckUserSubscription function - update scene tests for new function - add ValidateQueryDate test case - update SQL migration files for subscriptions
1 parent cf4d0d2 commit f927280

File tree

5 files changed

+148
-2
lines changed

5 files changed

+148
-2
lines changed

accounting/utils/format_test.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,3 +20,13 @@ func TestFormat_ValidateDateTimeFormat(t *testing.T) {
2020

2121
require.False(t, res)
2222
}
23+
24+
func TestFormat_ValidateQueryDate(t *testing.T) {
25+
layout := "2006-01-02 15:04:05"
26+
startDateStr := "2024-11-08 12:13:23"
27+
endDateStr := "2024-11-09 12:13:23"
28+
start, end, err := ValidateQueryDate(startDateStr, endDateStr, layout)
29+
require.Nil(t, err)
30+
require.Equal(t, startDateStr, start)
31+
require.Equal(t, "2024-11-10 12:13:23", end)
32+
}

accounting/utils/scene.go

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,6 @@ func GetSkuUnitTypeByScene(scene types.SceneType) types.SkuUnitType {
3535
return types.UnitToken
3636
case types.SceneGuiAgent:
3737
return types.UnitToken
38-
case types.SceneSubscription:
39-
return types.UnitMonth
4038
default:
4139
return types.UnitMinute
4240
}
@@ -81,3 +79,17 @@ func IsNeedCheckMeteringInMinute(scene types.SceneType, valueType types.ChargeVa
8179
return false
8280
}
8381
}
82+
83+
func IsNeedCheckUserSubscription(scene types.SceneType) bool {
84+
switch types.SceneType(scene) {
85+
case types.SceneModelInference,
86+
types.SceneSpace,
87+
types.SceneModelFinetune,
88+
types.SceneEvaluation,
89+
types.SceneModelServerless,
90+
types.SceneStarship:
91+
return true
92+
default:
93+
return false
94+
}
95+
}

accounting/utils/scene_test.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -76,3 +76,20 @@ func TestScene_GetSKUTypeByScene(t *testing.T) {
7676
require.Equal(t, skuType, res)
7777
}
7878
}
79+
80+
func TestAccountUsersStore_IsNeedCheckUserSubscription(t *testing.T) {
81+
scenes := map[types.SceneType]bool{
82+
types.SceneModelInference: true,
83+
types.SceneSpace: true,
84+
types.SceneModelFinetune: true,
85+
types.SceneEvaluation: true,
86+
types.SceneModelServerless: true,
87+
types.SceneGuiAgent: false,
88+
types.SceneStarship: true,
89+
}
90+
91+
for scene, skuType := range scenes {
92+
res := IsNeedCheckUserSubscription(scene)
93+
require.Equal(t, skuType, res)
94+
}
95+
}
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
SET statement_timeout = 0;
2+
3+
--bun:split
4+
5+
ALTER TABLE account_prices DROP COLUMN IF EXISTS discount;
6+
7+
--bun:split
8+
9+
ALTER TABLE account_statements DROP COLUMN IF EXISTS discount;
10+
11+
--bun:split
12+
13+
ALTER TABLE account_statements DROP COLUMN IF EXISTS regular_value;
14+
15+
--bun:split
16+
17+
ALTER TABLE account_subscription_bills DROP COLUMN IF EXISTS sku_type;
18+
19+
--bun:split
20+
21+
ALTER TABLE account_subscription_bills DROP COLUMN IF EXISTS discount;
22+
23+
--bun:split
24+
25+
ALTER TABLE account_subscription_usages DROP COLUMN IF EXISTS value_type;
26+
27+
--bun:split
28+
29+
ALTER TABLE account_subscription_usages DROP COLUMN IF EXISTS sku_type;
30+
31+
--bun:split
32+
33+
DROP INDEX IF EXISTS idx_unique_account_subscription_useruuid_skutype;
34+
35+
--bun:split
36+
37+
CREATE INDEX IF NOT EXISTS idx_account_subscription_useruuid_skutype ON account_subscriptions (user_uuid,sku_type);
38+
39+
--bun:split
40+
41+
DROP INDEX IF EXISTS idx_account_subscription_bill_createdat_useruuid_status_skutype;
42+
43+
--bun:split
44+
45+
CREATE INDEX IF NOT EXISTS idx_account_subscription_bill_createdat_useruuid_status ON account_subscription_bills (created_at,user_uuid,status);
46+
47+
--bun:split
48+
49+
DROP INDEX IF EXISTS idx_account_sub_usage_billid_useruuid_skutype;
50+
51+
--bun:split
52+
53+
DROP INDEX IF EXISTS idx_account_sub_usage_billmonth_useruuid_skutype;
Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
SET statement_timeout = 0;
2+
3+
--bun:split
4+
5+
ALTER TABLE account_prices ADD COLUMN IF NOT EXISTS discount DOUBLE PRECISION;
6+
7+
--bun:split
8+
9+
ALTER TABLE account_statements ADD COLUMN IF NOT EXISTS discount DOUBLE PRECISION;
10+
11+
--bun:split
12+
13+
ALTER TABLE account_statements ADD COLUMN IF NOT EXISTS regular_value DOUBLE PRECISION;
14+
15+
--bun:split
16+
17+
ALTER TABLE account_subscription_bills ADD COLUMN IF NOT EXISTS sku_type BIGINT;
18+
19+
--bun:split
20+
21+
ALTER TABLE account_subscription_bills ADD COLUMN IF NOT EXISTS discount DOUBLE PRECISION;
22+
23+
--bun:split
24+
25+
ALTER TABLE account_subscription_usages ADD COLUMN IF NOT EXISTS value_type BIGINT;
26+
27+
--bun:split
28+
29+
ALTER TABLE account_subscription_usages ADD COLUMN IF NOT EXISTS sku_type BIGINT;
30+
31+
--bun:split
32+
33+
DROP INDEX IF EXISTS idx_account_subscription_useruuid_skutype;
34+
35+
--bun:split
36+
37+
CREATE UNIQUE INDEX IF NOT EXISTS idx_unique_account_subscription_useruuid_skutype ON account_subscriptions (user_uuid,sku_type);
38+
39+
--bun:split
40+
41+
DROP INDEX IF EXISTS idx_account_subscription_bill_createdat_useruuid_status;
42+
43+
--bun:split
44+
45+
CREATE INDEX IF NOT EXISTS idx_account_subscription_bill_createdat_useruuid_status_skutype ON account_subscription_bills (created_at,user_uuid,status,sku_type);
46+
47+
--bun:split
48+
49+
CREATE INDEX IF NOT EXISTS idx_account_sub_usage_billid_useruuid_skutype ON account_subscription_usages (bill_id,user_uuid,sku_type);
50+
51+
--bun:split
52+
53+
CREATE INDEX IF NOT EXISTS idx_account_sub_usage_billmonth_useruuid_skutype ON account_subscription_usages (bill_month,user_uuid,sku_type);
54+

0 commit comments

Comments
 (0)