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