| 454 | } |
| 455 | |
| 456 | pub async fn upsert_topic_timerange( |
| 457 | &self, |
| 458 | input: graphql::UpsertTopicTimerangeInput, |
| 459 | ) -> Result<git::UpsertTopicTimerangeResult> { |
| 460 | // FIXME |
| 461 | let starts = Geotime::from(&input.starts_at.0); |
| 462 | |
| 463 | git::UpsertTopicTimerange { |
| 464 | actor: Arc::clone(&self.viewer), |
| 465 | timerange: Timerange { |
| 466 | starts: geotime::LexicalGeohash::from(starts), |
| 467 | prefix_format: TimerangePrefixFormat::from(&input.prefix_format), |
| 468 | }, |
| 469 | repo_id: input.repo_id.try_into()?, |
| 470 | topic_id: input.topic_id.try_into()?, |
| 471 | } |
| 472 | .call(self.mutation()?, &self.redis) |
| 473 | } |
| 474 | |
| 475 | pub async fn user(&self, id: String) -> Result<Option<graphql::User>> { |
| 476 | let user = self |