sqlqueries.go 4.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. package dataprovider
  2. import "fmt"
  3. const (
  4. selectUserFields = "id,username,password,public_keys,home_dir,uid,gid,max_sessions,quota_size,quota_files,permissions,used_quota_size," +
  5. "used_quota_files,last_quota_update,upload_bandwidth,download_bandwidth,expiration_date,last_login,status,filters,filesystem," +
  6. "virtual_folders"
  7. )
  8. func getSQLPlaceholders() []string {
  9. var placeholders []string
  10. for i := 1; i <= 20; i++ {
  11. if config.Driver == PGSQLDataProviderName {
  12. placeholders = append(placeholders, fmt.Sprintf("$%v", i))
  13. } else {
  14. placeholders = append(placeholders, "?")
  15. }
  16. }
  17. return placeholders
  18. }
  19. func getUserByUsernameQuery() string {
  20. return fmt.Sprintf(`SELECT %v FROM %v WHERE username = %v`, selectUserFields, config.UsersTable, sqlPlaceholders[0])
  21. }
  22. func getUserByIDQuery() string {
  23. return fmt.Sprintf(`SELECT %v FROM %v WHERE id = %v`, selectUserFields, config.UsersTable, sqlPlaceholders[0])
  24. }
  25. func getUsersQuery(order string, username string) string {
  26. if len(username) > 0 {
  27. return fmt.Sprintf(`SELECT %v FROM %v WHERE username = %v ORDER BY username %v LIMIT %v OFFSET %v`,
  28. selectUserFields, config.UsersTable, sqlPlaceholders[0], order, sqlPlaceholders[1], sqlPlaceholders[2])
  29. }
  30. return fmt.Sprintf(`SELECT %v FROM %v ORDER BY username %v LIMIT %v OFFSET %v`, selectUserFields, config.UsersTable,
  31. order, sqlPlaceholders[0], sqlPlaceholders[1])
  32. }
  33. func getDumpUsersQuery() string {
  34. return fmt.Sprintf(`SELECT %v FROM %v`, selectUserFields, config.UsersTable)
  35. }
  36. func getUpdateQuotaQuery(reset bool) string {
  37. if reset {
  38. return fmt.Sprintf(`UPDATE %v SET used_quota_size = %v,used_quota_files = %v,last_quota_update = %v
  39. WHERE username = %v`, config.UsersTable, sqlPlaceholders[0], sqlPlaceholders[1], sqlPlaceholders[2], sqlPlaceholders[3])
  40. }
  41. return fmt.Sprintf(`UPDATE %v SET used_quota_size = used_quota_size + %v,used_quota_files = used_quota_files + %v,last_quota_update = %v
  42. WHERE username = %v`, config.UsersTable, sqlPlaceholders[0], sqlPlaceholders[1], sqlPlaceholders[2], sqlPlaceholders[3])
  43. }
  44. func getUpdateLastLoginQuery() string {
  45. return fmt.Sprintf(`UPDATE %v SET last_login = %v WHERE username = %v`, config.UsersTable, sqlPlaceholders[0], sqlPlaceholders[1])
  46. }
  47. func getQuotaQuery() string {
  48. return fmt.Sprintf(`SELECT used_quota_size,used_quota_files FROM %v WHERE username = %v`, config.UsersTable,
  49. sqlPlaceholders[0])
  50. }
  51. func getAddUserQuery() string {
  52. return fmt.Sprintf(`INSERT INTO %v (username,password,public_keys,home_dir,uid,gid,max_sessions,quota_size,quota_files,permissions,
  53. used_quota_size,used_quota_files,last_quota_update,upload_bandwidth,download_bandwidth,status,last_login,expiration_date,filters,
  54. filesystem,virtual_folders)
  55. VALUES (%v,%v,%v,%v,%v,%v,%v,%v,%v,%v,0,0,0,%v,%v,%v,0,%v,%v,%v,%v)`, config.UsersTable, sqlPlaceholders[0], sqlPlaceholders[1],
  56. sqlPlaceholders[2], sqlPlaceholders[3], sqlPlaceholders[4], sqlPlaceholders[5], sqlPlaceholders[6], sqlPlaceholders[7],
  57. sqlPlaceholders[8], sqlPlaceholders[9], sqlPlaceholders[10], sqlPlaceholders[11], sqlPlaceholders[12], sqlPlaceholders[13],
  58. sqlPlaceholders[14], sqlPlaceholders[15], sqlPlaceholders[16])
  59. }
  60. func getUpdateUserQuery() string {
  61. return fmt.Sprintf(`UPDATE %v SET password=%v,public_keys=%v,home_dir=%v,uid=%v,gid=%v,max_sessions=%v,quota_size=%v,
  62. quota_files=%v,permissions=%v,upload_bandwidth=%v,download_bandwidth=%v,status=%v,expiration_date=%v,filters=%v,filesystem=%v,
  63. virtual_folders=%v WHERE id = %v`, config.UsersTable, sqlPlaceholders[0], sqlPlaceholders[1], sqlPlaceholders[2], sqlPlaceholders[3],
  64. sqlPlaceholders[4], sqlPlaceholders[5], sqlPlaceholders[6], sqlPlaceholders[7], sqlPlaceholders[8], sqlPlaceholders[9],
  65. sqlPlaceholders[10], sqlPlaceholders[11], sqlPlaceholders[12], sqlPlaceholders[13], sqlPlaceholders[14], sqlPlaceholders[15],
  66. sqlPlaceholders[16])
  67. }
  68. func getDeleteUserQuery() string {
  69. return fmt.Sprintf(`DELETE FROM %v WHERE id = %v`, config.UsersTable, sqlPlaceholders[0])
  70. }
  71. func getDatabaseVersionQuery() string {
  72. return "SELECT version from schema_version LIMIT 1"
  73. }
  74. func getUpdateDBVersionQuery() string {
  75. return fmt.Sprintf(`UPDATE schema_version SET version=%v`, sqlPlaceholders[0])
  76. }