dbinstancejoints.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. // Copyright 2019 Yunion
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. package models
  15. import (
  16. "context"
  17. "yunion.io/x/pkg/errors"
  18. "yunion.io/x/sqlchemy"
  19. api "yunion.io/x/onecloud/pkg/apis/compute"
  20. "yunion.io/x/onecloud/pkg/cloudcommon/db"
  21. "yunion.io/x/onecloud/pkg/mcclient"
  22. )
  23. // +onecloud:swagger-gen-ignore
  24. type SDBInstanceJointsManager struct {
  25. db.SVirtualJointResourceBaseManager
  26. SDBInstanceResourceBaseManager
  27. }
  28. func NewDBInstanceJointsManager(dt interface{}, tableName string, keyword string, keywordPlural string, slave db.IVirtualModelManager) SDBInstanceJointsManager {
  29. return SDBInstanceJointsManager{
  30. SVirtualJointResourceBaseManager: db.NewVirtualJointResourceBaseManager(
  31. dt,
  32. tableName,
  33. keyword,
  34. keywordPlural,
  35. DBInstanceManager,
  36. slave,
  37. ),
  38. }
  39. }
  40. // +onecloud:swagger-gen-ignore
  41. type SDBInstanceJointsBase struct {
  42. db.SVirtualJointResourceBase
  43. SDBInstanceResourceBase `width:"36" charset:"ascii" name:"dbinstance_id" nullable:"false" list:"user" create:"required" index:"true"`
  44. // DBInstanceId string `width:"36" charset:"ascii" name:"dbinstance_id" nullable:"false" list:"user" create:"required" index:"true"`
  45. }
  46. func (self *SDBInstanceJointsBase) getDBInstance() (*SDBInstance, error) {
  47. instance, err := DBInstanceManager.FetchById(self.DBInstanceId)
  48. if err != nil {
  49. return nil, errors.Wrapf(err, "getDBInstance.FetchById")
  50. }
  51. return instance.(*SDBInstance), nil
  52. }
  53. func (manager *SDBInstanceJointsManager) GetMasterFieldName() string {
  54. return "dbinstance_id"
  55. }
  56. func (manager *SDBInstanceJointsManager) ListItemFilter(
  57. ctx context.Context,
  58. q *sqlchemy.SQuery,
  59. userCred mcclient.TokenCredential,
  60. query api.DBInstanceJoinListInput,
  61. ) (*sqlchemy.SQuery, error) {
  62. q, err := manager.SVirtualJointResourceBaseManager.ListItemFilter(ctx, q, userCred, query.VirtualJointResourceBaseListInput)
  63. if err != nil {
  64. return nil, errors.Wrap(err, "SVirtualJointResourceBase.ListItemFilter")
  65. }
  66. q, err = manager.SDBInstanceResourceBaseManager.ListItemFilter(ctx, q, userCred, query.DBInstanceFilterListInput)
  67. if err != nil {
  68. return nil, errors.Wrap(err, "SDBInstanceResourceBaseManager.ListItemFilter")
  69. }
  70. return q, nil
  71. }
  72. func (manager *SDBInstanceJointsManager) OrderByExtraFields(
  73. ctx context.Context,
  74. q *sqlchemy.SQuery,
  75. userCred mcclient.TokenCredential,
  76. query api.DBInstanceJoinListInput,
  77. ) (*sqlchemy.SQuery, error) {
  78. var err error
  79. q, err = manager.SVirtualJointResourceBaseManager.OrderByExtraFields(ctx, q, userCred, query.VirtualJointResourceBaseListInput)
  80. if err != nil {
  81. return nil, errors.Wrap(err, "SVirtualJointResourceBaseManager.OrderByExtraFields")
  82. }
  83. q, err = manager.SDBInstanceResourceBaseManager.OrderByExtraFields(ctx, q, userCred, query.DBInstanceFilterListInput)
  84. if err != nil {
  85. return nil, errors.Wrap(err, "SDBInstanceResourceBaseManager.OrderByExtraFields")
  86. }
  87. return q, nil
  88. }