package core import ( "net/url" "repositories.action2quare.com/ayo/gocommon/wshandler" "go.mongodb.org/mongo-driver/bson" "go.mongodb.org/mongo-driver/bson/primitive" ) type groupConfig struct { UniqueIndex []string `json:"unique_index"` SearchIndex []string `json:"search_index"` MemberIndex []string `json:"member_index"` TextSearchFields []string `json:"text_search_field"` InviteExpire int32 `json:"invite_ttl"` // 그룹이 개인에게 보낸 초대장 만료 기한 CandidateExpire int32 `json:"candidate_ttl"` // 개인이 그룹에게 보낸 신청서 만료 기한 InviteeExlusive bool `json:"invitee_exlusive"` InviteeIsMember bool `json:"invitee_is_member"` MaxMember int `json:"max_member"` Transient bool `json:"transient"` Name string } type group interface { Create(form url.Values, doc bson.M) (primitive.ObjectID, error) Candidate(groupID primitive.ObjectID, memberID primitive.ObjectID, doc bson.M) error Join(groupID primitive.ObjectID, memberID primitive.ObjectID, ticketID primitive.ObjectID, doc bson.M) (newTicketID primitive.ObjectID, err error) FindTicketID(groupID primitive.ObjectID, memberID primitive.ObjectID) primitive.ObjectID Invite(groupID primitive.ObjectID, memberID primitive.ObjectID, inviterDoc bson.M, inviteeDoc bson.M) (string, error) UpdateGroupMember(groupID primitive.ObjectID, memberID primitive.ObjectID, ticketID primitive.ObjectID, doc bson.M) error CancelInvitation(groupID primitive.ObjectID, ticketID primitive.ObjectID) error AcceptInvitation(groupID primitive.ObjectID, mid primitive.ObjectID, ticketID primitive.ObjectID, member bson.M) (primitive.ObjectID, error) DenyInvitation(groupID primitive.ObjectID, mid primitive.ObjectID, ticketID primitive.ObjectID) error QueryInvitations(memberID primitive.ObjectID, after primitive.Timestamp) ([]bson.M, error) Exist(groupID primitive.ObjectID, filter bson.M) (bool, error) FindAll(filter bson.M, projection string, after primitive.Timestamp) ([]bson.M, error) FindOne(groupID primitive.ObjectID, projection string) (bson.M, error) QueryMembers(groupID primitive.ObjectID, requesterID primitive.ObjectID, projection string, after primitive.Timestamp) (map[string]bson.M, error) QueryMember(groupID primitive.ObjectID, memberID primitive.ObjectID, ticketID primitive.ObjectID, projection string) (bson.M, error) Leave(groupID primitive.ObjectID, memberID primitive.ObjectID, ticketID primitive.ObjectID) error DropPausedMember(groupID primitive.ObjectID, memberID primitive.ObjectID) error PauseMember(groupID primitive.ObjectID, memberID primitive.ObjectID, conn *wshandler.Richconn) error UpdateMemberDocument(groupID primitive.ObjectID, memberID primitive.ObjectID, doc bson.M) error Dismiss(groupID primitive.ObjectID) error UpdateGroupDocument(groupID primitive.ObjectID, body []byte) error }