mirror of
https://github.com/SigNoz/signoz.git
synced 2025-12-17 15:36:48 +00:00
chore: added normal index in sql schema
This commit is contained in:
parent
cbb24d9a34
commit
5e3449db63
@ -114,3 +114,78 @@ func (index *UniqueIndex) ToDropSQL(fmter SQLFormatter) []byte {
|
||||
|
||||
return sql
|
||||
}
|
||||
|
||||
type NormalIndex struct {
|
||||
TableName TableName
|
||||
ColumnNames []ColumnName
|
||||
name string
|
||||
}
|
||||
|
||||
func (index *NormalIndex) Name() string {
|
||||
if index.name != "" {
|
||||
return index.name
|
||||
}
|
||||
|
||||
var b strings.Builder
|
||||
b.WriteString(IndexTypeIndex.String())
|
||||
b.WriteString("_")
|
||||
b.WriteString(string(index.TableName))
|
||||
b.WriteString("_")
|
||||
for i, column := range index.ColumnNames {
|
||||
if i > 0 {
|
||||
b.WriteString("_")
|
||||
}
|
||||
b.WriteString(string(column))
|
||||
}
|
||||
return b.String()
|
||||
}
|
||||
|
||||
func (index *NormalIndex) Named(name string) Index {
|
||||
copyOfColumnNames := make([]ColumnName, len(index.ColumnNames))
|
||||
copy(copyOfColumnNames, index.ColumnNames)
|
||||
|
||||
return &NormalIndex{
|
||||
TableName: index.TableName,
|
||||
ColumnNames: copyOfColumnNames,
|
||||
name: name,
|
||||
}
|
||||
}
|
||||
|
||||
func (*NormalIndex) Type() IndexType {
|
||||
return IndexTypeIndex
|
||||
}
|
||||
|
||||
func (index *NormalIndex) Columns() []ColumnName {
|
||||
return index.ColumnNames
|
||||
}
|
||||
|
||||
func (index *NormalIndex) ToCreateSQL(fmter SQLFormatter) []byte {
|
||||
sql := []byte{}
|
||||
|
||||
sql = append(sql, "CREATE INDEX IF NOT EXISTS "...)
|
||||
sql = fmter.AppendIdent(sql, index.Name())
|
||||
sql = append(sql, " ON "...)
|
||||
sql = fmter.AppendIdent(sql, string(index.TableName))
|
||||
sql = append(sql, " ("...)
|
||||
|
||||
for i, column := range index.ColumnNames {
|
||||
if i > 0 {
|
||||
sql = append(sql, ", "...)
|
||||
}
|
||||
|
||||
sql = fmter.AppendIdent(sql, string(column))
|
||||
}
|
||||
|
||||
sql = append(sql, ")"...)
|
||||
|
||||
return sql
|
||||
}
|
||||
|
||||
func (index *NormalIndex) ToDropSQL(fmter SQLFormatter) []byte {
|
||||
sql := []byte{}
|
||||
|
||||
sql = append(sql, "DROP INDEX IF EXISTS "...)
|
||||
sql = fmter.AppendIdent(sql, index.Name())
|
||||
|
||||
return sql
|
||||
}
|
||||
|
||||
@ -38,6 +38,31 @@ func TestIndexToCreateSQL(t *testing.T) {
|
||||
},
|
||||
sql: `CREATE UNIQUE INDEX IF NOT EXISTS "my_index" ON "users" ("id", "name", "email")`,
|
||||
},
|
||||
{
|
||||
name: "Normal_1Column",
|
||||
index: &NormalIndex{
|
||||
TableName: "users",
|
||||
ColumnNames: []ColumnName{"org_id"},
|
||||
},
|
||||
sql: `CREATE INDEX IF NOT EXISTS "ix_users_org_id" ON "users" ("org_id")`,
|
||||
},
|
||||
{
|
||||
name: "Normal_2Columns",
|
||||
index: &NormalIndex{
|
||||
TableName: "users",
|
||||
ColumnNames: []ColumnName{"org_id", "status"},
|
||||
},
|
||||
sql: `CREATE INDEX IF NOT EXISTS "ix_users_org_id_status" ON "users" ("org_id", "status")`,
|
||||
},
|
||||
{
|
||||
name: "Normal_3Columns_Named",
|
||||
index: &NormalIndex{
|
||||
TableName: "route_policy",
|
||||
ColumnNames: []ColumnName{"org_id", "enabled", "kind"},
|
||||
name: "idx_custom_name",
|
||||
},
|
||||
sql: `CREATE INDEX IF NOT EXISTS "idx_custom_name" ON "route_policy" ("org_id", "enabled", "kind")`,
|
||||
},
|
||||
}
|
||||
|
||||
for _, testCase := range testCases {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user