add social_network repo

This commit is contained in:
daniel.w 2024-09-03 09:17:50 +08:00
parent 5599f88787
commit 350bbf086c
6 changed files with 27 additions and 24 deletions

View File

@ -22,7 +22,7 @@ RedisCluster:
Type: cluster Type: cluster
Neo4J: Neo4J:
URI: neo4j://localhost:7687 URI: bolt://localhost:7687
Username: neo4j Username: neo4j
Password: yyyytttt Password: yyyytttt
MaxConnectionPoolSize: 20 MaxConnectionPoolSize: 20

View File

@ -19,6 +19,12 @@ func NewNeo4J(conf *Config, opts ...Option) *Client {
neo4ji := &Client{ neo4ji := &Client{
neo4jConf: driverConfig, neo4jConf: driverConfig,
serviceConf: Config{
URI: conf.URI,
Username: conf.Username,
Password: conf.Password,
LogLevel: conf.LogLevel,
},
} }
for _, opt := range opts { for _, opt := range opts {
@ -35,13 +41,6 @@ func (c *Client) Conn() (neo4j.DriverWithContext, error) {
if err != nil { if err != nil {
return nil, fmt.Errorf("neo4j driver initialization error: %w", err) return nil, fmt.Errorf("neo4j driver initialization error: %w", err)
} }
defer func(driver neo4j.DriverWithContext, ctx context.Context) {
err := driver.Close(ctx)
if err != nil {
// fmt
}
}(driver, context.Background())
ctx := context.Background() ctx := context.Background()
// Verify the connection to Neo4j. // Verify the connection to Neo4j.

View File

@ -28,6 +28,7 @@ func (l *AddUserToNetworkLogic) AddUserToNetwork(in *tweeting.AddUserToNetworkRe
// todo: add your logic here and delete this line // todo: add your logic here and delete this line
err := l.svcCtx.SocialNetworkRepository.CreateUserNode(l.ctx, in.GetUid()) err := l.svcCtx.SocialNetworkRepository.CreateUserNode(l.ctx, in.GetUid())
if err != nil { if err != nil {
fmt.Println("gg88g88g8", err)
return nil, err return nil, err
} }
fmt.Println(err) fmt.Println(err)

View File

@ -5,10 +5,7 @@ import (
"app-cloudep-tweeting-service/internal/domain/repository" "app-cloudep-tweeting-service/internal/domain/repository"
client4J "app-cloudep-tweeting-service/internal/lib/neo4j" client4J "app-cloudep-tweeting-service/internal/lib/neo4j"
"context" "context"
"fmt" "github.com/neo4j/neo4j-go-driver/v5/neo4j"
ers "code.30cm.net/digimon/library-go/errs"
n4 "github.com/neo4j/neo4j-go-driver/v5/neo4j"
) )
type SocialNetworkParam struct { type SocialNetworkParam struct {
@ -29,25 +26,28 @@ func MustSocialNetworkRepository(param SocialNetworkParam) repository.SocialNetw
} }
func (s SocialNetworkRepository) CreateUserNode(ctx context.Context, uid string) error { func (s SocialNetworkRepository) CreateUserNode(ctx context.Context, uid string) error {
// 執行 Cypher session, err := s.neo4jClient.Conn()
conn, err := s.neo4jClient.Conn()
if err != nil { if err != nil {
return ers.DBError("failed to connect to node4j", err.Error()) return err
} }
defer session.Close(ctx)
insert := map[string]any{ params := map[string]interface{}{
"uid": uid, "uid": uid,
} }
result, err := conn.NewSession(ctx, n4.SessionConfig{ _, err = session.NewSession(ctx, neo4j.SessionConfig{
AccessMode: n4.AccessModeWrite, AccessMode: neo4j.AccessModeWrite,
}).Run(ctx, "CREATE (n:Person {name: $name}) RETURN n", insert) }).Run(ctx, "CREATE (n:User {uid: $uid}) RETURN n", params)
if err != nil { if err != nil {
return err return err
} }
fmt.Println(result.Keys()) // // 處理結果
// if run.Next(ctx) {
// node := run.Record().AsMap()
// fmt.Printf("Created Node: %v\n", node)
// }
return nil return nil
} }

View File

@ -6,7 +6,6 @@ import (
"app-cloudep-tweeting-service/internal/lib/neo4j" "app-cloudep-tweeting-service/internal/lib/neo4j"
model "app-cloudep-tweeting-service/internal/model/mongo" model "app-cloudep-tweeting-service/internal/model/mongo"
"app-cloudep-tweeting-service/internal/repository" "app-cloudep-tweeting-service/internal/repository"
"github.com/zeromicro/go-zero/core/stores/redis" "github.com/zeromicro/go-zero/core/stores/redis"
vi "code.30cm.net/digimon/library-go/validator" vi "code.30cm.net/digimon/library-go/validator"

View File

@ -6,7 +6,10 @@ import (
"app-cloudep-tweeting-service/gen_result/pb/tweeting" "app-cloudep-tweeting-service/gen_result/pb/tweeting"
"app-cloudep-tweeting-service/internal/config" "app-cloudep-tweeting-service/internal/config"
commentserviceServer "app-cloudep-tweeting-service/internal/server/commentservice"
postserviceServer "app-cloudep-tweeting-service/internal/server/postservice" postserviceServer "app-cloudep-tweeting-service/internal/server/postservice"
socialnetworkserviceServer "app-cloudep-tweeting-service/internal/server/socialnetworkservice"
timelineserviceServer "app-cloudep-tweeting-service/internal/server/timelineservice"
"app-cloudep-tweeting-service/internal/svc" "app-cloudep-tweeting-service/internal/svc"
"github.com/zeromicro/go-zero/core/conf" "github.com/zeromicro/go-zero/core/conf"
@ -18,8 +21,6 @@ import (
var configFile = flag.String("f", "etc/tweeting.yaml", "the config file") var configFile = flag.String("f", "etc/tweeting.yaml", "the config file")
// TODO 要把每一個錯誤代碼修改的更詳細,目前都資料庫錯誤
func main() { func main() {
flag.Parse() flag.Parse()
@ -29,6 +30,9 @@ func main() {
s := zrpc.MustNewServer(c.RpcServerConf, func(grpcServer *grpc.Server) { s := zrpc.MustNewServer(c.RpcServerConf, func(grpcServer *grpc.Server) {
tweeting.RegisterPostServiceServer(grpcServer, postserviceServer.NewPostServiceServer(ctx)) tweeting.RegisterPostServiceServer(grpcServer, postserviceServer.NewPostServiceServer(ctx))
tweeting.RegisterCommentServiceServer(grpcServer, commentserviceServer.NewCommentServiceServer(ctx))
tweeting.RegisterTimelineServiceServer(grpcServer, timelineserviceServer.NewTimelineServiceServer(ctx))
tweeting.RegisterSocialNetworkServiceServer(grpcServer, socialnetworkserviceServer.NewSocialNetworkServiceServer(ctx))
if c.Mode == service.DevMode || c.Mode == service.TestMode { if c.Mode == service.DevMode || c.Mode == service.TestMode {
reflection.Register(grpcServer) reflection.Register(grpcServer)