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