Files
assets/service/sync/platforms.go
2026-03-18 10:18:03 +08:00

756 lines
22 KiB
Go

package service
import (
consts "assets/consts/public"
"assets/model/entity/sync"
"context"
"go.mongodb.org/mongo-driver/v2/bson"
)
// 为各平台创建占位服务
// 实际的API调用逻辑将在后续实现
// TaobaoAssetService 淘宝资产服务
type TaobaoAssetService struct {
*BasePlatformService
}
func NewTaobaoAssetService(config *entity.ChannelConfig) *TaobaoAssetService {
return &TaobaoAssetService{
BasePlatformService: NewBasePlatformService(consts.SyncPlatformTaobao, config),
}
}
func (s *TaobaoAssetService) SyncAsset(ctx context.Context, assetID *bson.ObjectID) error {
// TODO: 实现淘宝资产同步逻辑
return nil
}
func (s *TaobaoAssetService) GetAsset(ctx context.Context, assetID *bson.ObjectID) (interface{}, error) {
return nil, nil
}
func (s *TaobaoAssetService) UpdateAsset(ctx context.Context, assetID *bson.ObjectID, data interface{}) error {
return nil
}
func (s *TaobaoAssetService) DeleteAsset(ctx context.Context, assetID *bson.ObjectID) error {
return nil
}
// TaobaoAssetSkuService 淘宝资产SKU服务
type TaobaoAssetSkuService struct {
*BasePlatformService
}
func NewTaobaoAssetSkuService(config *entity.ChannelConfig) *TaobaoAssetSkuService {
return &TaobaoAssetSkuService{
BasePlatformService: NewBasePlatformService(consts.SyncPlatformTaobao, config),
}
}
func (s *TaobaoAssetSkuService) SyncAssetSku(ctx context.Context, assetSkuID *bson.ObjectID) error {
return nil
}
func (s *TaobaoAssetSkuService) GetAssetSku(ctx context.Context, assetSkuID *bson.ObjectID) (interface{}, error) {
return nil, nil
}
func (s *TaobaoAssetSkuService) UpdateAssetSku(ctx context.Context, assetSkuID *bson.ObjectID, data interface{}) error {
return nil
}
func (s *TaobaoAssetSkuService) DeleteAssetSku(ctx context.Context, assetSkuID *bson.ObjectID) error {
return nil
}
// TaobaoStockService 淘宝库存服务
type TaobaoStockService struct {
*BasePlatformService
}
func NewTaobaoStockService(config *entity.ChannelConfig) *TaobaoStockService {
return &TaobaoStockService{
BasePlatformService: NewBasePlatformService(consts.SyncPlatformTaobao, config),
}
}
func (s *TaobaoStockService) SyncStock(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
func (s *TaobaoStockService) GetStock(ctx context.Context, stockID *bson.ObjectID) (interface{}, error) {
return nil, nil
}
func (s *TaobaoStockService) UpdateStock(ctx context.Context, stockID *bson.ObjectID, data interface{}) error {
return nil
}
func (s *TaobaoStockService) DeleteStock(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
// 其他平台的占位服务结构体...
// 京东、抖音、快手、小红书、拼多多、闲鱼、区块链等
// 由于代码结构相似,这里只展示模板
// JDAssetService 京东资产服务
type JDAssetService struct {
*BasePlatformService
}
func NewJDAssetService(config *entity.ChannelConfig) *JDAssetService {
return &JDAssetService{
BasePlatformService: NewBasePlatformService(consts.SyncPlatformJD, config),
}
}
func (s *JDAssetService) SyncAsset(ctx context.Context, assetID *bson.ObjectID) error {
return nil
}
func (s *JDAssetService) GetAsset(ctx context.Context, assetID *bson.ObjectID) (interface{}, error) {
return nil, nil
}
func (s *JDAssetService) UpdateAsset(ctx context.Context, assetID *bson.ObjectID, data interface{}) error {
return nil
}
func (s *JDAssetService) DeleteAsset(ctx context.Context, assetID *bson.ObjectID) error {
return nil
}
// JDAssetSkuService 京东资产SKU服务
type JDAssetSkuService struct {
*BasePlatformService
}
func NewJDAssetSkuService(config *entity.ChannelConfig) *JDAssetSkuService {
return &JDAssetSkuService{
BasePlatformService: NewBasePlatformService(consts.SyncPlatformJD, config),
}
}
func (s *JDAssetSkuService) SyncAssetSku(ctx context.Context, assetSkuID *bson.ObjectID) error {
return nil
}
func (s *JDAssetSkuService) GetAssetSku(ctx context.Context, assetSkuID *bson.ObjectID) (interface{}, error) {
return nil, nil
}
func (s *JDAssetSkuService) UpdateAssetSku(ctx context.Context, assetSkuID *bson.ObjectID, data interface{}) error {
return nil
}
func (s *JDAssetSkuService) DeleteAssetSku(ctx context.Context, assetSkuID *bson.ObjectID) error {
return nil
}
// JDStockService 京东库存服务
type JDStockService struct {
*BasePlatformService
}
func NewJDStockService(config *entity.ChannelConfig) *JDStockService {
return &JDStockService{
BasePlatformService: NewBasePlatformService(consts.SyncPlatformJD, config),
}
}
func (s *JDStockService) SyncStock(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
func (s *JDStockService) GetStock(ctx context.Context, stockID *bson.ObjectID) (interface{}, error) {
return nil, nil
}
func (s *JDStockService) UpdateStock(ctx context.Context, stockID *bson.ObjectID, data interface{}) error {
return nil
}
func (s *JDStockService) DeleteStock(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
// DouyinAssetService 抖音资产服务
type DouyinAssetService struct {
*BasePlatformService
}
func NewDouyinAssetService(config *entity.ChannelConfig) *DouyinAssetService {
return &DouyinAssetService{
BasePlatformService: NewBasePlatformService(consts.SyncPlatformDouyin, config),
}
}
func (s *DouyinAssetService) SyncAsset(ctx context.Context, assetID *bson.ObjectID) error {
return nil
}
func (s *DouyinAssetService) GetAsset(ctx context.Context, assetID *bson.ObjectID) (interface{}, error) {
return nil, nil
}
func (s *DouyinAssetService) UpdateAsset(ctx context.Context, assetID *bson.ObjectID, data interface{}) error {
return nil
}
func (s *DouyinAssetService) DeleteAsset(ctx context.Context, assetID *bson.ObjectID) error {
return nil
}
// DouyinAssetSkuService 抖音资产SKU服务
type DouyinAssetSkuService struct {
*BasePlatformService
}
func NewDouyinAssetSkuService(config *entity.ChannelConfig) *DouyinAssetSkuService {
return &DouyinAssetSkuService{
BasePlatformService: NewBasePlatformService(consts.SyncPlatformDouyin, config),
}
}
func (s *DouyinAssetSkuService) SyncAssetSku(ctx context.Context, assetSkuID *bson.ObjectID) error {
return nil
}
func (s *DouyinAssetSkuService) GetAssetSku(ctx context.Context, assetSkuID *bson.ObjectID) (interface{}, error) {
return nil, nil
}
func (s *DouyinAssetSkuService) UpdateAssetSku(ctx context.Context, assetSkuID *bson.ObjectID, data interface{}) error {
return nil
}
func (s *DouyinAssetSkuService) DeleteAssetSku(ctx context.Context, assetSkuID *bson.ObjectID) error {
return nil
}
// DouyinStockService 抖音库存服务
type DouyinStockService struct {
*BasePlatformService
}
func NewDouyinStockService(config *entity.ChannelConfig) *DouyinStockService {
return &DouyinStockService{
BasePlatformService: NewBasePlatformService(consts.SyncPlatformDouyin, config),
}
}
func (s *DouyinStockService) SyncStock(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
func (s *DouyinStockService) GetStock(ctx context.Context, stockID *bson.ObjectID) (interface{}, error) {
return nil, nil
}
func (s *DouyinStockService) UpdateStock(ctx context.Context, stockID *bson.ObjectID, data interface{}) error {
return nil
}
func (s *DouyinStockService) DeleteStock(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
// 其他平台服务的占位函数声明
// KuaishouAssetService, KuaishouAssetSkuService, KuaishouStockService
// XiaohongshuAssetService, XiaohongshuAssetSkuService, XiaohongshuStockService
// PinduoduoAssetService, PinduoduoAssetSkuService, PinduoduoStockService
// XianyuAssetService, XianyuAssetSkuService, XianyuStockService
// BlockchainAssetService, BlockchainAssetSkuService, BlockchainStockService
// InternalAssetService, InternalAssetSkuService, InternalStockService
// KuaishouAssetService 快手资产服务
type KuaishouAssetService struct {
*BasePlatformService
}
func NewKuaishouAssetService(config *entity.ChannelConfig) *KuaishouAssetService {
return &KuaishouAssetService{
BasePlatformService: NewBasePlatformService(consts.SyncPlatformKuaishou, config),
}
}
func (s *KuaishouAssetService) SyncAsset(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
func (s *KuaishouAssetService) GetAsset(ctx context.Context, stockID *bson.ObjectID) (interface{}, error) {
return nil, nil
}
func (s *KuaishouAssetService) UpdateAsset(ctx context.Context, stockID *bson.ObjectID, data interface{}) error {
return nil
}
func (s *KuaishouAssetService) DeleteAsset(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
// KuaishouAssetSkuService 快手资产SKU服务
type KuaishouAssetSkuService struct {
*BasePlatformService
}
func NewKuaishouAssetSkuService(config *entity.ChannelConfig) *KuaishouAssetSkuService {
return &KuaishouAssetSkuService{
BasePlatformService: NewBasePlatformService(consts.SyncPlatformKuaishou, config),
}
}
func (s *KuaishouAssetSkuService) SyncAssetSku(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
func (s *KuaishouAssetSkuService) GetAssetSku(ctx context.Context, stockID *bson.ObjectID) (interface{}, error) {
return nil, nil
}
func (s *KuaishouAssetSkuService) UpdateAssetSku(ctx context.Context, stockID *bson.ObjectID, data interface{}) error {
return nil
}
func (s *KuaishouAssetSkuService) DeleteAssetSku(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
// KuaishouStockService 快手库存服务
type KuaishouStockService struct {
*BasePlatformService
}
func NewKuaishouStockService(config *entity.ChannelConfig) *KuaishouStockService {
return &KuaishouStockService{
BasePlatformService: NewBasePlatformService(consts.SyncPlatformKuaishou, config),
}
}
func (s *KuaishouStockService) SyncStock(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
func (s *KuaishouStockService) GetStock(ctx context.Context, stockID *bson.ObjectID) (interface{}, error) {
return nil, nil
}
func (s *KuaishouStockService) UpdateStock(ctx context.Context, stockID *bson.ObjectID, data interface{}) error {
return nil
}
func (s *KuaishouStockService) DeleteStock(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
// XiaohongshuAssetService 小红书资产服务
type XiaohongshuAssetService struct {
*BasePlatformService
}
func NewXiaohongshuAssetService(config *entity.ChannelConfig) *XiaohongshuAssetService {
return &XiaohongshuAssetService{
BasePlatformService: NewBasePlatformService(consts.SyncPlatformXiaohongshu, config),
}
}
func (s *XiaohongshuAssetService) SyncAsset(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
func (s *XiaohongshuAssetService) GetAsset(ctx context.Context, stockID *bson.ObjectID) (interface{}, error) {
return nil, nil
}
func (s *XiaohongshuAssetService) UpdateAsset(ctx context.Context, stockID *bson.ObjectID, data interface{}) error {
return nil
}
func (s *XiaohongshuAssetService) DeleteAsset(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
// XiaohongshuAssetSkuService 小红书资产SKU服务
type XiaohongshuAssetSkuService struct {
*BasePlatformService
}
func NewXiaohongshuAssetSkuService(config *entity.ChannelConfig) *XiaohongshuAssetSkuService {
return &XiaohongshuAssetSkuService{
BasePlatformService: NewBasePlatformService(consts.SyncPlatformXiaohongshu, config),
}
}
func (s *XiaohongshuAssetSkuService) SyncAssetSku(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
func (s *XiaohongshuAssetSkuService) GetAssetSku(ctx context.Context, stockID *bson.ObjectID) (interface{}, error) {
return nil, nil
}
func (s *XiaohongshuAssetSkuService) UpdateAssetSku(ctx context.Context, stockID *bson.ObjectID, data interface{}) error {
return nil
}
func (s *XiaohongshuAssetSkuService) DeleteAssetSku(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
// XiaohongshuStockService 小红书库存服务
type XiaohongshuStockService struct {
*BasePlatformService
}
func NewXiaohongshuStockService(config *entity.ChannelConfig) *XiaohongshuStockService {
return &XiaohongshuStockService{
BasePlatformService: NewBasePlatformService(consts.SyncPlatformXiaohongshu, config),
}
}
func (s *XiaohongshuStockService) SyncStock(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
func (s *XiaohongshuStockService) GetStock(ctx context.Context, stockID *bson.ObjectID) (interface{}, error) {
return nil, nil
}
func (s *XiaohongshuStockService) UpdateStock(ctx context.Context, stockID *bson.ObjectID, data interface{}) error {
return nil
}
func (s *XiaohongshuStockService) DeleteStock(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
// PinduoduoAssetService 拼多多资产服务
type PinduoduoAssetService struct {
*BasePlatformService
}
func NewPinduoduoAssetService(config *entity.ChannelConfig) *PinduoduoAssetService {
return &PinduoduoAssetService{
BasePlatformService: NewBasePlatformService(consts.SyncPlatformPinduoduo, config),
}
}
func (s *PinduoduoAssetService) SyncAsset(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
func (s *PinduoduoAssetService) GetAsset(ctx context.Context, stockID *bson.ObjectID) (interface{}, error) {
return nil, nil
}
func (s *PinduoduoAssetService) UpdateAsset(ctx context.Context, stockID *bson.ObjectID, data interface{}) error {
return nil
}
func (s *PinduoduoAssetService) DeleteAsset(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
// PinduoduoAssetSkuService 拼多多资产SKU服务
type PinduoduoAssetSkuService struct {
*BasePlatformService
}
func NewPinduoduoAssetSkuService(config *entity.ChannelConfig) *PinduoduoAssetSkuService {
return &PinduoduoAssetSkuService{
BasePlatformService: NewBasePlatformService(consts.SyncPlatformPinduoduo, config),
}
}
func (s *PinduoduoAssetSkuService) SyncAssetSku(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
func (s *PinduoduoAssetSkuService) GetAssetSku(ctx context.Context, stockID *bson.ObjectID) (interface{}, error) {
return nil, nil
}
func (s *PinduoduoAssetSkuService) UpdateAssetSku(ctx context.Context, stockID *bson.ObjectID, data interface{}) error {
return nil
}
func (s *PinduoduoAssetSkuService) DeleteAssetSku(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
// PinduoduoStockService 拼多多库存服务
type PinduoduoStockService struct {
*BasePlatformService
}
func NewPinduoduoStockService(config *entity.ChannelConfig) *PinduoduoStockService {
return &PinduoduoStockService{
BasePlatformService: NewBasePlatformService(consts.SyncPlatformPinduoduo, config),
}
}
func (s *PinduoduoStockService) SyncStock(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
func (s *PinduoduoStockService) GetStock(ctx context.Context, stockID *bson.ObjectID) (interface{}, error) {
return nil, nil
}
func (s *PinduoduoStockService) UpdateStock(ctx context.Context, stockID *bson.ObjectID, data interface{}) error {
return nil
}
func (s *PinduoduoStockService) DeleteStock(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
// XianyuAssetService 闲鱼资产服务
type XianyuAssetService struct {
*BasePlatformService
}
func NewXianyuAssetService(config *entity.ChannelConfig) *XianyuAssetService {
return &XianyuAssetService{
BasePlatformService: NewBasePlatformService(consts.SyncPlatformXianyu, config),
}
}
func (s *XianyuAssetService) SyncAsset(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
func (s *XianyuAssetService) GetAsset(ctx context.Context, stockID *bson.ObjectID) (interface{}, error) {
return nil, nil
}
func (s *XianyuAssetService) UpdateAsset(ctx context.Context, stockID *bson.ObjectID, data interface{}) error {
return nil
}
func (s *XianyuAssetService) DeleteAsset(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
// XianyuAssetSkuService 闲鱼资产SKU服务
type XianyuAssetSkuService struct {
*BasePlatformService
}
func NewXianyuAssetSkuService(config *entity.ChannelConfig) *XianyuAssetSkuService {
return &XianyuAssetSkuService{
BasePlatformService: NewBasePlatformService(consts.SyncPlatformXianyu, config),
}
}
func (s *XianyuAssetSkuService) SyncAssetSku(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
func (s *XianyuAssetSkuService) GetAssetSku(ctx context.Context, stockID *bson.ObjectID) (interface{}, error) {
return nil, nil
}
func (s *XianyuAssetSkuService) UpdateAssetSku(ctx context.Context, stockID *bson.ObjectID, data interface{}) error {
return nil
}
func (s *XianyuAssetSkuService) DeleteAssetSku(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
// XianyuStockService 闲鱼库存服务
type XianyuStockService struct {
*BasePlatformService
}
func NewXianyuStockService(config *entity.ChannelConfig) *XianyuStockService {
return &XianyuStockService{
BasePlatformService: NewBasePlatformService(consts.SyncPlatformXianyu, config),
}
}
func (s *XianyuStockService) SyncStock(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
func (s *XianyuStockService) GetStock(ctx context.Context, stockID *bson.ObjectID) (interface{}, error) {
return nil, nil
}
func (s *XianyuStockService) UpdateStock(ctx context.Context, stockID *bson.ObjectID, data interface{}) error {
return nil
}
func (s *XianyuStockService) DeleteStock(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
// BlockchainAssetService 区块链资产服务
type BlockchainAssetService struct {
*BasePlatformService
}
func NewBlockchainAssetService(config *entity.ChannelConfig) *BlockchainAssetService {
return &BlockchainAssetService{
BasePlatformService: NewBasePlatformService(consts.SyncPlatformBlockchain, config),
}
}
func (s *BlockchainAssetService) SyncAsset(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
func (s *BlockchainAssetService) GetAsset(ctx context.Context, stockID *bson.ObjectID) (interface{}, error) {
return nil, nil
}
func (s *BlockchainAssetService) UpdateAsset(ctx context.Context, stockID *bson.ObjectID, data interface{}) error {
return nil
}
func (s *BlockchainAssetService) DeleteAsset(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
// BlockchainAssetSkuService 区块链资产SKU服务
type BlockchainAssetSkuService struct {
*BasePlatformService
}
func NewBlockchainAssetSkuService(config *entity.ChannelConfig) *BlockchainAssetSkuService {
return &BlockchainAssetSkuService{
BasePlatformService: NewBasePlatformService(consts.SyncPlatformBlockchain, config),
}
}
func (s *BlockchainAssetSkuService) SyncAssetSku(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
func (s *BlockchainAssetSkuService) GetAssetSku(ctx context.Context, stockID *bson.ObjectID) (interface{}, error) {
return nil, nil
}
func (s *BlockchainAssetSkuService) UpdateAssetSku(ctx context.Context, stockID *bson.ObjectID, data interface{}) error {
return nil
}
func (s *BlockchainAssetSkuService) DeleteAssetSku(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
// BlockchainStockService 区块链库存服务
type BlockchainStockService struct {
*BasePlatformService
}
func NewBlockchainStockService(config *entity.ChannelConfig) *BlockchainStockService {
return &BlockchainStockService{
BasePlatformService: NewBasePlatformService(consts.SyncPlatformBlockchain, config),
}
}
func (s *BlockchainStockService) SyncStock(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
func (s *BlockchainStockService) GetStock(ctx context.Context, stockID *bson.ObjectID) (interface{}, error) {
return nil, nil
}
func (s *BlockchainStockService) UpdateStock(ctx context.Context, stockID *bson.ObjectID, data interface{}) error {
return nil
}
func (s *BlockchainStockService) DeleteStock(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
// InternalAssetService 内部资产服务(使用 assets-sync 中的完整实现)
type InternalAssetService struct {
*BasePlatformService
}
func NewInternalAssetService(config *entity.ChannelConfig) *InternalAssetService {
return &InternalAssetService{
BasePlatformService: NewBasePlatformService(consts.SyncPlatformInternal, config),
}
}
func (s *InternalAssetService) SyncAsset(ctx context.Context, stockID *bson.ObjectID) error {
// TODO: 实现内部资产同步逻辑
return nil
}
func (s *InternalAssetService) GetAsset(ctx context.Context, stockID *bson.ObjectID) (interface{}, error) {
return nil, nil
}
func (s *InternalAssetService) UpdateAsset(ctx context.Context, stockID *bson.ObjectID, data interface{}) error {
return nil
}
func (s *InternalAssetService) DeleteAsset(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
// InternalAssetSkuService 内部资产SKU服务
type InternalAssetSkuService struct {
*BasePlatformService
}
func NewInternalAssetSkuService(config *entity.ChannelConfig) *InternalAssetSkuService {
return &InternalAssetSkuService{
BasePlatformService: NewBasePlatformService(consts.SyncPlatformInternal, config),
}
}
func (s *InternalAssetSkuService) SyncAssetSku(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
func (s *InternalAssetSkuService) GetAssetSku(ctx context.Context, stockID *bson.ObjectID) (interface{}, error) {
return nil, nil
}
func (s *InternalAssetSkuService) UpdateAssetSku(ctx context.Context, stockID *bson.ObjectID, data interface{}) error {
return nil
}
func (s *InternalAssetSkuService) DeleteAssetSku(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
// InternalStockService 内部库存服务
type InternalStockService struct {
*BasePlatformService
}
func NewInternalStockService(config *entity.ChannelConfig) *InternalStockService {
return &InternalStockService{
BasePlatformService: NewBasePlatformService(consts.SyncPlatformInternal, config),
}
}
func (s *InternalStockService) SyncStock(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}
func (s *InternalStockService) GetStock(ctx context.Context, stockID *bson.ObjectID) (interface{}, error) {
return nil, nil
}
func (s *InternalStockService) UpdateStock(ctx context.Context, stockID *bson.ObjectID, data interface{}) error {
return nil
}
func (s *InternalStockService) DeleteStock(ctx context.Context, stockID *bson.ObjectID) error {
return nil
}