mirror of
https://github.com/hanzoai/insights.git
synced 2026-11-03 00:52:32 +00:00
PersonHog was the last of it, and it was not only a name. The package is personinsights and the types in it are already Person* -- the shipped descriptor under personinsights_client/proto/generated says PersonService and the tests say TestFakePersonClient -- but the .proto still declared PersonHogService. A client dialling one service name and a server built from a .proto declaring another is not a naming problem, it is a wire that does not connect; the only reason nobody hit it is that none of these services runs here yet. Five service declarations now say what the generated client has said all along. StreamHog was a second fictional company, invented so a Stripe mock had someone to bill. This fork already has Hedgebox, in five hundred fixtures, so the mock bills Hedgebox and there is one made-up company again instead of two. REVIEW_HOG was an enum member in three enums that had to agree, whose value has been `review` since the app was renamed. Only the member said otherwise. Every rule is in bin/debrand and every spelling is refused there, so a fresh upstream import lands on these names and none of them can come back. Two are named as outstanding rather than refused, with the reason each is still sayable: hogdesk survives inside applied migrations' choices lists, where Django compares it in Python and never writes it -- the member is Desk = "desk" and all three tables that store it hold no rows; sherlockhog keys a service in another repository that still calls itself that, and renaming our half would classify its traffic as a product that does not exist. Co-authored-by: Hanzo Dev <[email protected]>
87 lines
7.3 KiB
Protocol Buffer
87 lines
7.3 KiB
Protocol Buffer
syntax = "proto3";
|
|
package personinsights.service.v1;
|
|
|
|
import "personinsights/types/v1/person.proto";
|
|
import "personinsights/types/v1/group.proto";
|
|
import "personinsights/types/v1/cohort.proto";
|
|
import "personinsights/types/v1/feature_flag.proto";
|
|
|
|
// PersonService is the public API exposed by the router.
|
|
// Clients call this service; the router handles backend selection and routing.
|
|
service PersonService {
|
|
// Person lookups by ID
|
|
rpc GetPerson(personinsights.types.v1.GetPersonRequest) returns (personinsights.types.v1.GetPersonResponse);
|
|
rpc GetPersons(personinsights.types.v1.GetPersonsRequest) returns (personinsights.types.v1.PersonsResponse);
|
|
rpc GetPersonByUuid(personinsights.types.v1.GetPersonByUuidRequest) returns (personinsights.types.v1.GetPersonResponse);
|
|
rpc GetPersonsByUuids(personinsights.types.v1.GetPersonsByUuidsRequest) returns (personinsights.types.v1.PersonsResponse);
|
|
|
|
// Person lookups by distinct ID
|
|
rpc GetPersonByDistinctId(personinsights.types.v1.GetPersonByDistinctIdRequest) returns (personinsights.types.v1.GetPersonResponse);
|
|
rpc GetPersonsByDistinctIdsInTeam(personinsights.types.v1.GetPersonsByDistinctIdsInTeamRequest) returns (personinsights.types.v1.PersonsByDistinctIdsInTeamResponse);
|
|
rpc GetPersonsByDistinctIds(personinsights.types.v1.GetPersonsByDistinctIdsRequest) returns (personinsights.types.v1.PersonsByDistinctIdsResponse);
|
|
|
|
// Distinct ID operations
|
|
rpc GetDistinctIdsForPerson(personinsights.types.v1.GetDistinctIdsForPersonRequest) returns (personinsights.types.v1.GetDistinctIdsForPersonResponse);
|
|
rpc GetDistinctIdsForPersons(personinsights.types.v1.GetDistinctIdsForPersonsRequest) returns (personinsights.types.v1.GetDistinctIdsForPersonsResponse);
|
|
|
|
// Feature flag hash key override support
|
|
rpc GetHashKeyOverrideContext(personinsights.types.v1.GetHashKeyOverrideContextRequest) returns (personinsights.types.v1.GetHashKeyOverrideContextResponse);
|
|
rpc UpsertHashKeyOverrides(personinsights.types.v1.UpsertHashKeyOverridesRequest) returns (personinsights.types.v1.UpsertHashKeyOverridesResponse);
|
|
rpc DeleteHashKeyOverridesByTeams(personinsights.types.v1.DeleteHashKeyOverridesByTeamsRequest) returns (personinsights.types.v1.DeleteHashKeyOverridesByTeamsResponse);
|
|
|
|
// Cohort membership
|
|
rpc CheckCohortMembership(personinsights.types.v1.CheckCohortMembershipRequest) returns (personinsights.types.v1.CohortMembershipResponse);
|
|
rpc CountCohortMembers(personinsights.types.v1.CountCohortMembersRequest) returns (personinsights.types.v1.CountCohortMembersResponse);
|
|
rpc DeleteCohortMember(personinsights.types.v1.DeleteCohortMemberRequest) returns (personinsights.types.v1.DeleteCohortMemberResponse);
|
|
rpc DeleteCohortMembersBulk(personinsights.types.v1.DeleteCohortMembersBulkRequest) returns (personinsights.types.v1.DeleteCohortMembersBulkResponse);
|
|
rpc InsertCohortMembers(personinsights.types.v1.InsertCohortMembersRequest) returns (personinsights.types.v1.InsertCohortMembersResponse);
|
|
rpc ListCohortMemberIds(personinsights.types.v1.ListCohortMemberIdsRequest) returns (personinsights.types.v1.ListCohortMemberIdsResponse);
|
|
|
|
// Groups
|
|
rpc GetGroup(personinsights.types.v1.GetGroupRequest) returns (personinsights.types.v1.GetGroupResponse);
|
|
rpc GetGroups(personinsights.types.v1.GetGroupsRequest) returns (personinsights.types.v1.GroupsResponse);
|
|
rpc GetGroupsBatch(personinsights.types.v1.GetGroupsBatchRequest) returns (personinsights.types.v1.GetGroupsBatchResponse);
|
|
rpc ListGroups(personinsights.types.v1.ListGroupsRequest) returns (personinsights.types.v1.ListGroupsResponse);
|
|
|
|
// Group type mappings
|
|
rpc GetGroupTypeMappingsByTeamId(personinsights.types.v1.GetGroupTypeMappingsByTeamIdRequest) returns (personinsights.types.v1.GroupTypeMappingsResponse);
|
|
rpc GetGroupTypeMappingsByTeamIds(personinsights.types.v1.GetGroupTypeMappingsByTeamIdsRequest) returns (personinsights.types.v1.GroupTypeMappingsBatchResponse);
|
|
rpc GetGroupTypeMappingsByProjectId(personinsights.types.v1.GetGroupTypeMappingsByProjectIdRequest) returns (personinsights.types.v1.GroupTypeMappingsResponse);
|
|
rpc GetGroupTypeMappingsByProjectIds(personinsights.types.v1.GetGroupTypeMappingsByProjectIdsRequest) returns (personinsights.types.v1.GroupTypeMappingsBatchResponse);
|
|
rpc GetGroupTypeMappingByDashboardId(personinsights.types.v1.GetGroupTypeMappingByDashboardIdRequest) returns (personinsights.types.v1.GetGroupTypeMappingByDashboardIdResponse);
|
|
rpc CountGroupTypeMappings(personinsights.types.v1.CountGroupTypeMappingsRequest) returns (personinsights.types.v1.CountGroupTypeMappingsResponse);
|
|
|
|
// Group writes (routed to replica — non-person data)
|
|
rpc CreateGroup(personinsights.types.v1.CreateGroupRequest) returns (personinsights.types.v1.CreateGroupResponse);
|
|
rpc UpdateGroup(personinsights.types.v1.UpdateGroupRequest) returns (personinsights.types.v1.UpdateGroupResponse);
|
|
rpc DeleteGroupsBatchForTeam(personinsights.types.v1.DeleteGroupsBatchForTeamRequest) returns (personinsights.types.v1.DeleteGroupsBatchForTeamResponse);
|
|
|
|
// Group type mapping writes (routed to replica — non-person data)
|
|
rpc UpdateGroupTypeMapping(personinsights.types.v1.UpdateGroupTypeMappingRequest) returns (personinsights.types.v1.UpdateGroupTypeMappingResponse);
|
|
rpc DeleteGroupTypeMapping(personinsights.types.v1.DeleteGroupTypeMappingRequest) returns (personinsights.types.v1.DeleteGroupTypeMappingResponse);
|
|
rpc DeleteGroupTypeMappingsBatchForTeam(personinsights.types.v1.DeleteGroupTypeMappingsBatchForTeamRequest) returns (personinsights.types.v1.DeleteGroupTypeMappingsBatchForTeamResponse);
|
|
|
|
// Person property updates (routed to leader)
|
|
rpc UpdatePersonProperties(personinsights.types.v1.UpdatePersonPropertiesRequest) returns (personinsights.types.v1.UpdatePersonPropertiesResponse);
|
|
|
|
// Person deletes
|
|
// WARNING: This is a write operation on person data. It should route to the leader
|
|
// once personinsights-leader supports deletes. Currently routed through the replica
|
|
// (which uses the primary Postgres pool) as a temporary measure.
|
|
// TODO: Migrate routing to leader before personinsights-leader goes live.
|
|
rpc DeletePersons(personinsights.types.v1.DeletePersonsRequest) returns (personinsights.types.v1.DeletePersonsResponse);
|
|
// WARNING: Same routing caveat as DeletePersons above.
|
|
rpc DeletePersonsBatchForTeam(personinsights.types.v1.DeletePersonsBatchForTeamRequest) returns (personinsights.types.v1.DeletePersonsBatchForTeamResponse);
|
|
// WARNING: Same routing caveat as DeletePersons above.
|
|
rpc DeletePersonlessDistinctIdsBatchForTeam(personinsights.types.v1.DeletePersonlessDistinctIdsBatchForTeamRequest) returns (personinsights.types.v1.DeletePersonlessDistinctIdsBatchForTeamResponse);
|
|
|
|
// Person split
|
|
// WARNING: Same routing caveat as DeletePersons above — write operation on person data
|
|
// routed through replica (primary pool) until leader supports transactional writes.
|
|
rpc SplitPerson(personinsights.types.v1.SplitPersonRequest) returns (personinsights.types.v1.SplitPersonResponse);
|
|
|
|
// Undelete repair version resets. Same routing caveat as DeletePersons above.
|
|
rpc SetPersonDistinctIdVersionFloor(personinsights.types.v1.SetPersonDistinctIdVersionFloorRequest) returns (personinsights.types.v1.SetPersonDistinctIdVersionFloorResponse);
|
|
rpc SetPersonVersionFloor(personinsights.types.v1.SetPersonVersionFloorRequest) returns (personinsights.types.v1.SetPersonVersionFloorResponse);
|
|
}
|