2021-01-20 01:21:50 +00:00
package mysql
import (
"fmt"
2021-03-29 06:58:13 +00:00
2021-01-20 01:21:50 +00:00
_ "github.com/go-sql-driver/mysql"
2022-07-29 07:17:28 +00:00
"github.com/seaweedfs/seaweedfs/weed/filer/abstract_sql"
2021-01-20 01:21:50 +00:00
)
type SqlGenMysql struct {
CreateTableSqlTemplate string
DropTableSqlTemplate string
2021-03-29 21:32:03 +00:00
UpsertQueryTemplate string
2021-01-20 01:21:50 +00:00
}
var (
_ = abstract_sql . SqlGenerator ( & SqlGenMysql { } )
)
2021-03-25 19:05:51 +00:00
func ( gen * SqlGenMysql ) GetSqlInsert ( tableName string ) string {
2021-03-29 21:32:03 +00:00
if gen . UpsertQueryTemplate != "" {
return fmt . Sprintf ( gen . UpsertQueryTemplate , tableName )
2021-03-29 06:58:13 +00:00
} else {
2023-01-01 13:06:41 +00:00
return fmt . Sprintf ( "INSERT INTO `%s` (`dirhash`,`name`,`directory`,`meta`) VALUES(?,?,?,?)" , tableName )
2021-03-29 06:58:13 +00:00
}
2021-01-20 01:21:50 +00:00
}
2021-03-25 19:05:51 +00:00
func ( gen * SqlGenMysql ) GetSqlUpdate ( tableName string ) string {
2023-01-01 13:06:41 +00:00
return fmt . Sprintf ( "UPDATE `%s` SET `meta` = ? WHERE `dirhash` = ? AND `name` = ? AND `directory` = ?" , tableName )
2021-01-20 01:21:50 +00:00
}
2021-03-25 19:05:51 +00:00
func ( gen * SqlGenMysql ) GetSqlFind ( tableName string ) string {
2023-01-01 13:06:41 +00:00
return fmt . Sprintf ( "SELECT `meta` FROM `%s` WHERE `dirhash` = ? AND `name = ? AND `directory` = ?" , tableName )
2021-01-20 01:21:50 +00:00
}
2021-03-25 19:05:51 +00:00
func ( gen * SqlGenMysql ) GetSqlDelete ( tableName string ) string {
2023-01-01 13:06:41 +00:00
return fmt . Sprintf ( "DELETE FROM `%s` WHERE `dirhash` = ? AND `name` = ? AND `directory` = ?" , tableName )
2021-01-20 01:21:50 +00:00
}
2021-03-25 19:05:51 +00:00
func ( gen * SqlGenMysql ) GetSqlDeleteFolderChildren ( tableName string ) string {
2023-01-01 13:06:41 +00:00
return fmt . Sprintf ( "DELETE FROM `%s` WHERE `dirhash` = ? AND `directory` = ?" , tableName )
2021-01-20 01:21:50 +00:00
}
2021-03-25 19:05:51 +00:00
func ( gen * SqlGenMysql ) GetSqlListExclusive ( tableName string ) string {
2023-01-01 13:06:41 +00:00
return fmt . Sprintf ( "SELECT `name`, `meta` FROM `%s` WHERE `dirhash` = ? AND `name` > ? AND `directory` = ? AND `name` LIKE ? ORDER BY `name` ASC LIMIT ?" , tableName )
2021-01-20 01:21:50 +00:00
}
2021-03-25 19:05:51 +00:00
func ( gen * SqlGenMysql ) GetSqlListInclusive ( tableName string ) string {
2023-01-01 13:06:41 +00:00
return fmt . Sprintf ( "SELECT `name`, `meta` FROM `%s` WHERE `dirhash` = ? AND `name` >= ? AND `directory` = ? AND `name` LIKE ? ORDER BY `name` ASC LIMIT ?" , tableName )
2021-01-20 01:21:50 +00:00
}
2021-03-25 19:05:51 +00:00
func ( gen * SqlGenMysql ) GetSqlCreateTable ( tableName string ) string {
return fmt . Sprintf ( gen . CreateTableSqlTemplate , tableName )
2021-01-20 01:21:50 +00:00
}
2021-03-25 19:05:51 +00:00
func ( gen * SqlGenMysql ) GetSqlDropTable ( tableName string ) string {
return fmt . Sprintf ( gen . DropTableSqlTemplate , tableName )
2021-01-20 01:21:50 +00:00
}