Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
Sharkey
Manage
Activity
Members
Labels
Plan
Issues
0
Issue boards
Milestones
Wiki
Requirements
Code
Merge requests
0
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package Registry
Container Registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
bunnybeam
Sharkey
Commits
ebc64379
Commit
ebc64379
authored
2 years ago
by
syuilo
Browse files
Options
Downloads
Patches
Plain Diff
refactor: tweak variable name
parent
843f1aed
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
packages/backend/src/core/chart/core.ts
+23
-23
23 additions, 23 deletions
packages/backend/src/core/chart/core.ts
with
23 additions
and
23 deletions
packages/backend/src/core/chart/core.ts
+
23
−
23
View file @
ebc64379
...
...
@@ -11,9 +11,9 @@ import type Logger from '@/logger.js';
import
{
bindThis
}
from
'
@/decorators.js
'
;
import
type
{
Repository
,
DataSource
}
from
'
typeorm
'
;
const
columnPrefix
=
'
___
'
as const
;
const
uniqueTempColumnPrefix
=
'
unique_temp___
'
as const
;
const
columnDot
=
'
_
'
as const
;
const
COLUMN_PREFIX
=
'
___
'
as const
;
const
UNIQUE_TEMP_COLUMN_PREFIX
=
'
unique_temp___
'
as const
;
const
COLUMN_DELIMITER
=
'
_
'
as const
;
type
Schema
=
Record
<
string
,
{
uniqueIncrement
?:
boolean
;
...
...
@@ -26,14 +26,14 @@ type Schema = Record<string, {
accumulate
?:
boolean
;
}
>
;
type
KeyToColumnName
<
T
extends
string
>
=
T
extends
`
${
infer
R1
}
.
${
infer
R2
}
`
?
`
${
R1
}${
typeof
columnDot
}${
KeyToColumnName
<
R2
>
}
`
:
T
;
type
KeyToColumnName
<
T
extends
string
>
=
T
extends
`
${
infer
R1
}
.
${
infer
R2
}
`
?
`
${
R1
}${
typeof
COLUMN_DELIMITER
}${
KeyToColumnName
<
R2
>
}
`
:
T
;
type
Columns
<
S
extends
Schema
>
=
{
[
K
in
keyof
S
as
`
${
typeof
columnPrefix
}${
KeyToColumnName
<
string
&
K
>
}
`
]:
number
;
[
K
in
keyof
S
as
`
${
typeof
COLUMN_PREFIX
}${
KeyToColumnName
<
string
&
K
>
}
`
]:
number
;
};
type
TempColumnsForUnique
<
S
extends
Schema
>
=
{
[
K
in
keyof
S
as
`
${
typeof
uniqueTempColumnPrefix
}${
KeyToColumnName
<
string
&
K
>
}
`
]:
S
[
K
][
'
uniqueIncrement
'
]
extends
true
?
string
[]
:
never
;
[
K
in
keyof
S
as
`
${
typeof
UNIQUE_TEMP_COLUMN_PREFIX
}${
KeyToColumnName
<
string
&
K
>
}
`
]:
S
[
K
][
'
uniqueIncrement
'
]
extends
true
?
string
[]
:
never
;
};
type
RawRecord
<
S
extends
Schema
>
=
{
...
...
@@ -138,20 +138,20 @@ export default abstract class Chart<T extends Schema> {
private
static
convertSchemaToColumnDefinitions
(
schema
:
Schema
):
Record
<
string
,
{
type
:
string
;
array
?:
boolean
;
default
?:
any
;
}
>
{
const
columns
=
{}
as
Record
<
string
,
{
type
:
string
;
array
?:
boolean
;
default
?:
any
;
}
>
;
for
(
const
[
k
,
v
]
of
Object
.
entries
(
schema
))
{
const
name
=
k
.
replaceAll
(
'
.
'
,
columnDot
);
const
name
=
k
.
replaceAll
(
'
.
'
,
COLUMN_DELIMITER
);
const
type
=
v
.
range
===
'
big
'
?
'
bigint
'
:
v
.
range
===
'
small
'
?
'
smallint
'
:
'
integer
'
;
if
(
v
.
uniqueIncrement
)
{
columns
[
uniqueTempColumnPrefix
+
name
]
=
{
columns
[
UNIQUE_TEMP_COLUMN_PREFIX
+
name
]
=
{
type
:
'
varchar
'
,
array
:
true
,
default
:
'
{}
'
,
};
columns
[
columnPrefix
+
name
]
=
{
columns
[
COLUMN_PREFIX
+
name
]
=
{
type
,
default
:
0
,
};
}
else
{
columns
[
columnPrefix
+
name
]
=
{
columns
[
COLUMN_PREFIX
+
name
]
=
{
type
,
default
:
0
,
};
...
...
@@ -253,8 +253,8 @@ export default abstract class Chart<T extends Schema> {
@
bindThis
private
convertRawRecord
(
x
:
RawRecord
<
T
>
):
KVs
<
T
>
{
const
kvs
=
{}
as
Record
<
string
,
number
>
;
for
(
const
k
of
Object
.
keys
(
x
).
filter
((
k
)
=>
k
.
startsWith
(
columnPrefix
))
as
(
keyof
Columns
<
T
>
)[])
{
kvs
[(
k
as
string
).
substr
(
columnPrefix
.
length
).
split
(
columnDot
).
join
(
'
.
'
)]
=
x
[
k
]
as
unknown
as
number
;
for
(
const
k
of
Object
.
keys
(
x
).
filter
((
k
)
=>
k
.
startsWith
(
COLUMN_PREFIX
))
as
(
keyof
Columns
<
T
>
)[])
{
kvs
[(
k
as
string
).
substr
(
COLUMN_PREFIX
.
length
).
split
(
COLUMN_DELIMITER
).
join
(
'
.
'
)]
=
x
[
k
]
as
unknown
as
number
;
}
return
kvs
as
KVs
<
T
>
;
}
...
...
@@ -357,8 +357,8 @@ export default abstract class Chart<T extends Schema> {
const
columns
=
{}
as
Record
<
string
,
number
|
unknown
[]
>
;
for
(
const
[
k
,
v
]
of
Object
.
entries
(
data
))
{
const
name
=
k
.
replaceAll
(
'
.
'
,
columnDot
);
columns
[
columnPrefix
+
name
]
=
v
;
const
name
=
k
.
replaceAll
(
'
.
'
,
COLUMN_DELIMITER
);
columns
[
COLUMN_PREFIX
+
name
]
=
v
;
}
// 新規ログ挿入
...
...
@@ -419,13 +419,13 @@ export default abstract class Chart<T extends Schema> {
const
queryForDay
:
Record
<
keyof
RawRecord
<
T
>
,
number
|
(()
=>
string
)
>
=
{}
as
any
;
for
(
const
[
k
,
v
]
of
Object
.
entries
(
finalDiffs
))
{
if
(
typeof
v
===
'
number
'
)
{
const
name
=
columnPrefix
+
k
.
replaceAll
(
'
.
'
,
columnDot
)
as
string
&
keyof
Columns
<
T
>
;
const
name
=
COLUMN_PREFIX
+
k
.
replaceAll
(
'
.
'
,
COLUMN_DELIMITER
)
as
string
&
keyof
Columns
<
T
>
;
if
(
v
>
0
)
queryForHour
[
name
]
=
()
=>
`"
${
name
}
" +
${
v
}
`
;
if
(
v
<
0
)
queryForHour
[
name
]
=
()
=>
`"
${
name
}
" -
${
Math
.
abs
(
v
)}
`
;
if
(
v
>
0
)
queryForDay
[
name
]
=
()
=>
`"
${
name
}
" +
${
v
}
`
;
if
(
v
<
0
)
queryForDay
[
name
]
=
()
=>
`"
${
name
}
" -
${
Math
.
abs
(
v
)}
`
;
}
else
if
(
Array
.
isArray
(
v
)
&&
v
.
length
>
0
)
{
// ユニークインクリメント
const
tempColumnName
=
uniqueTempColumnPrefix
+
k
.
replaceAll
(
'
.
'
,
columnDot
)
as
string
&
keyof
TempColumnsForUnique
<
T
>
;
const
tempColumnName
=
UNIQUE_TEMP_COLUMN_PREFIX
+
k
.
replaceAll
(
'
.
'
,
COLUMN_DELIMITER
)
as
string
&
keyof
TempColumnsForUnique
<
T
>
;
// TODO: item をSQLエスケープ
const
itemsForHour
=
v
.
filter
(
item
=>
!
(
logHour
[
tempColumnName
]
as
unknown
as
string
[]).
includes
(
item
)).
map
(
item
=>
`"
${
item
}
"`
);
const
itemsForDay
=
v
.
filter
(
item
=>
!
(
logDay
[
tempColumnName
]
as
unknown
as
string
[]).
includes
(
item
)).
map
(
item
=>
`"
${
item
}
"`
);
...
...
@@ -437,8 +437,8 @@ export default abstract class Chart<T extends Schema> {
// bake unique count
for
(
const
[
k
,
v
]
of
Object
.
entries
(
finalDiffs
))
{
if
(
this
.
schema
[
k
].
uniqueIncrement
)
{
const
name
=
columnPrefix
+
k
.
replaceAll
(
'
.
'
,
columnDot
)
as
keyof
Columns
<
T
>
;
const
tempColumnName
=
uniqueTempColumnPrefix
+
k
.
replaceAll
(
'
.
'
,
columnDot
)
as
keyof
TempColumnsForUnique
<
T
>
;
const
name
=
COLUMN_PREFIX
+
k
.
replaceAll
(
'
.
'
,
COLUMN_DELIMITER
)
as
keyof
Columns
<
T
>
;
const
tempColumnName
=
UNIQUE_TEMP_COLUMN_PREFIX
+
k
.
replaceAll
(
'
.
'
,
COLUMN_DELIMITER
)
as
keyof
TempColumnsForUnique
<
T
>
;
queryForHour
[
name
]
=
new
Set
([...(
v
as
string
[]),
...(
logHour
[
tempColumnName
]
as
unknown
as
string
[])]).
size
;
queryForDay
[
name
]
=
new
Set
([...(
v
as
string
[]),
...(
logDay
[
tempColumnName
]
as
unknown
as
string
[])]).
size
;
}
...
...
@@ -449,15 +449,15 @@ export default abstract class Chart<T extends Schema> {
for
(
const
[
k
,
v
]
of
Object
.
entries
(
this
.
schema
))
{
const
intersection
=
v
.
intersection
;
if
(
intersection
)
{
const
name
=
columnPrefix
+
k
.
replaceAll
(
'
.
'
,
columnDot
)
as
keyof
Columns
<
T
>
;
const
name
=
COLUMN_PREFIX
+
k
.
replaceAll
(
'
.
'
,
COLUMN_DELIMITER
)
as
keyof
Columns
<
T
>
;
const
firstKey
=
intersection
[
0
];
const
firstTempColumnName
=
uniqueTempColumnPrefix
+
firstKey
.
replaceAll
(
'
.
'
,
columnDot
)
as
keyof
TempColumnsForUnique
<
T
>
;
const
firstTempColumnName
=
UNIQUE_TEMP_COLUMN_PREFIX
+
firstKey
.
replaceAll
(
'
.
'
,
COLUMN_DELIMITER
)
as
keyof
TempColumnsForUnique
<
T
>
;
const
firstValues
=
finalDiffs
[
firstKey
]
as
string
[]
|
undefined
;
const
currentValuesForHour
=
new
Set
([...(
firstValues
??
[]),
...(
logHour
[
firstTempColumnName
]
as
unknown
as
string
[])]);
const
currentValuesForDay
=
new
Set
([...(
firstValues
??
[]),
...(
logDay
[
firstTempColumnName
]
as
unknown
as
string
[])]);
for
(
let
i
=
1
;
i
<
intersection
.
length
;
i
++
)
{
const
targetKey
=
intersection
[
i
];
const
targetTempColumnName
=
uniqueTempColumnPrefix
+
targetKey
.
replaceAll
(
'
.
'
,
columnDot
)
as
keyof
TempColumnsForUnique
<
T
>
;
const
targetTempColumnName
=
UNIQUE_TEMP_COLUMN_PREFIX
+
targetKey
.
replaceAll
(
'
.
'
,
COLUMN_DELIMITER
)
as
keyof
TempColumnsForUnique
<
T
>
;
const
targetValues
=
finalDiffs
[
targetKey
]
as
string
[]
|
undefined
;
const
targetValuesForHour
=
new
Set
([...(
targetValues
??
[]),
...(
logHour
[
targetTempColumnName
]
as
unknown
as
string
[])]);
const
targetValuesForDay
=
new
Set
([...(
targetValues
??
[]),
...(
logDay
[
targetTempColumnName
]
as
unknown
as
string
[])]);
...
...
@@ -510,7 +510,7 @@ export default abstract class Chart<T extends Schema> {
const
columns
=
{}
as
Record
<
keyof
Columns
<
T
>
,
number
>
;
for
(
const
[
k
,
v
]
of
Object
.
entries
(
data
)
as
([
keyof
typeof
data
,
number
])[])
{
const
name
=
columnPrefix
+
(
k
as
string
).
replaceAll
(
'
.
'
,
columnDot
)
as
keyof
Columns
<
T
>
;
const
name
=
COLUMN_PREFIX
+
(
k
as
string
).
replaceAll
(
'
.
'
,
COLUMN_DELIMITER
)
as
keyof
Columns
<
T
>
;
columns
[
name
]
=
v
;
}
...
...
@@ -556,7 +556,7 @@ export default abstract class Chart<T extends Schema> {
const
columns
=
{}
as
Record
<
keyof
TempColumnsForUnique
<
T
>
,
[]
>
;
for
(
const
[
k
,
v
]
of
Object
.
entries
(
this
.
schema
))
{
if
(
v
.
uniqueIncrement
)
{
const
name
=
uniqueTempColumnPrefix
+
k
.
replaceAll
(
'
.
'
,
columnDot
)
as
keyof
TempColumnsForUnique
<
T
>
;
const
name
=
UNIQUE_TEMP_COLUMN_PREFIX
+
k
.
replaceAll
(
'
.
'
,
COLUMN_DELIMITER
)
as
keyof
TempColumnsForUnique
<
T
>
;
columns
[
name
]
=
[];
}
}
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment