58 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
| package svc
 | |
| 
 | |
| import (
 | |
| 	"app-cloudep-tweeting-service/internal/config"
 | |
| 	domainRepo "app-cloudep-tweeting-service/internal/domain/repository"
 | |
| 	"app-cloudep-tweeting-service/internal/lib/neo4j"
 | |
| 	model "app-cloudep-tweeting-service/internal/model/mongo"
 | |
| 	"app-cloudep-tweeting-service/internal/repository"
 | |
| 
 | |
| 	ers "code.30cm.net/digimon/library-go/errs"
 | |
| 	"code.30cm.net/digimon/library-go/errs/code"
 | |
| 
 | |
| 	"github.com/zeromicro/go-zero/core/stores/redis"
 | |
| 
 | |
| 	vi "code.30cm.net/digimon/library-go/validator"
 | |
| )
 | |
| 
 | |
| type ServiceContext struct {
 | |
| 	Config                  config.Config
 | |
| 	Validate                vi.Validate
 | |
| 	PostModel               model.PostModel
 | |
| 	CommentModel            model.CommentModel
 | |
| 	TimelineRepo            domainRepo.TimelineRepository
 | |
| 	SocialNetworkRepository domainRepo.SocialNetworkRepository
 | |
| }
 | |
| 
 | |
| func NewServiceContext(c config.Config) *ServiceContext {
 | |
| 	ers.Scope = code.CloudEPTweeting
 | |
| 	newRedis, err := redis.NewRedis(c.RedisCluster, redis.Cluster())
 | |
| 	if err != nil {
 | |
| 		panic(err)
 | |
| 	}
 | |
| 
 | |
| 	neoClient := neo4j.NewNeo4J(&neo4j.Config{
 | |
| 		URI:                   c.Neo4J.URI,
 | |
| 		Username:              c.Neo4J.Username,
 | |
| 		Password:              c.Neo4J.Password,
 | |
| 		MaxConnectionPoolSize: c.Neo4J.MaxConnectionPoolSize,
 | |
| 		MaxConnectionLifetime: c.Neo4J.MaxConnectionLifetime,
 | |
| 		ConnectionTimeout:     c.Neo4J.ConnectionTimeout,
 | |
| 	}, neo4j.WithPerformance(), neo4j.WithLogLevel(c.Neo4J.LogLevel))
 | |
| 
 | |
| 	return &ServiceContext{
 | |
| 		Config:       c,
 | |
| 		Validate:     vi.MustValidator(),
 | |
| 		PostModel:    MustPostModel(c),
 | |
| 		CommentModel: MustCommentModel(c),
 | |
| 		TimelineRepo: repository.MustGenerateRepository(repository.TimelineRepositoryParam{
 | |
| 			Config: c,
 | |
| 			Redis:  *newRedis,
 | |
| 		}),
 | |
| 		SocialNetworkRepository: repository.MustSocialNetworkRepository(repository.SocialNetworkParam{
 | |
| 			Config:      c,
 | |
| 			Neo4jClient: neoClient,
 | |
| 		}),
 | |
| 	}
 | |
| }
 |