@@ -23,6 +23,10 @@ public StorageOptions(IServiceProvider serviceProvider)
2323 }
2424 public bool Singleton { get ; set ; }
2525 public string UniqueName { get ; set ; }
26+ /// <summary>
27+ /// 分表间隔时间
28+ /// 设置为0时表示不分表
29+ /// </summary>
2630 public long SubTableMillionSecondsInterval { get ; set ; }
2731 public string EventTable => $ "{ UniqueName } _Event";
2832 public string SnapshotTable => $ "{ UniqueName } _Snapshot";
@@ -81,16 +85,32 @@ public async ValueTask<EventSubTable> GetTable(long eventTimestamp)
8185 if ( subTable is null )
8286 {
8387 var lastSubTable = getTask . Result . LastOrDefault ( ) ;
84- var startTime = lastSubTable != null ? ( lastSubTable . EndTime == lastSubTable . StartTime ? DateTimeOffset . UtcNow . ToUnixTimeMilliseconds ( ) : lastSubTable . EndTime ) : eventTimestamp ;
85- var index = lastSubTable is null ? 0 : lastSubTable . Index + 1 ;
86- subTable = new EventSubTable
88+ var startTime = lastSubTable != null ? ( lastSubTable . EndTime == lastSubTable . StartTime ? eventTimestamp : lastSubTable . EndTime ) : eventTimestamp ;
89+ if ( eventTimestamp >= startTime )
8790 {
88- TableName = EventTable ,
89- SubTable = $ "{ EventTable } _{ index } ",
90- Index = index ,
91- StartTime = startTime ,
92- EndTime = startTime + SubTableMillionSecondsInterval
93- } ;
91+ var index = lastSubTable is null ? 0 : lastSubTable . Index + 1 ;
92+ subTable = new EventSubTable
93+ {
94+ TableName = EventTable ,
95+ SubTable = $ "{ EventTable } _{ index } ",
96+ Index = index ,
97+ StartTime = startTime ,
98+ EndTime = startTime + SubTableMillionSecondsInterval
99+ } ;
100+ }
101+ else
102+ {
103+ var firstSubTable = getTask . Result . FirstOrDefault ( ) ;
104+ var index = firstSubTable . Index - 1 ;
105+ subTable = new EventSubTable
106+ {
107+ TableName = EventTable ,
108+ SubTable = $ "{ EventTable } _{ index } ",
109+ Index = index ,
110+ StartTime = firstSubTable . StartTime - SubTableMillionSecondsInterval ,
111+ EndTime = firstSubTable . StartTime
112+ } ;
113+ }
94114 try
95115 {
96116 await BuildRepository . CreateEventTable ( subTable ) ;
0 commit comments