public class InMemoryDatabase
{
public Dictionary<int, Person> People = [];
public Dictionary<int, List<int>>? Friends { get; set; } = [];
public void AddPerson(int id, string? name, int? age) =>
People.Add(id, new Person(id, name, age));
public string? FetchPerson(int personId) =>
People.TryGetValue(personId, out var foundPerson) ? foundPerson.ToString() : null;
public void UpdatePerson(int personId, Person updatedPerson)
{
if (People.TryGetValue(personId, out var foundPerson))
People[foundPerson.Id] = updatedPerson;
}
public void RemovePerson(int personId)
{
if (People.TryGetValue(personId, out var foundPerson))
People.Remove(foundPerson.Id);
}
public IEnumerable<string>? GetFriends(int personId)
{
if(Friends == null)
throw new Exception("No Friends list available");
if (Friends.TryGetValue(personId, out var friendIds))
return People.Where(x => friendIds.Contains(x.Key)).Select(x => x.ToString());
else
return null;
}
}
public class InMemoryDatabase
{
public Dictionary<int, Person> People = [];
public Dictionary<int, List<int>>? Friends { get; set; } = [];
public void AddPerson(int id, string? name, int? age) =>
People.Add(id, new Person(id, name, age));
public string? FetchPerson(int personId) =>
People.TryGetValue(personId, out var foundPerson) ? foundPerson.ToString() : null;
public void UpdatePerson(int personId, Person updatedPerson)
{
if (People.TryGetValue(personId, out var foundPerson))
People[foundPerson.Id] = updatedPerson;
}
public void RemovePerson(int personId)
{
if (People.TryGetValue(personId, out var foundPerson))
People.Remove(foundPerson.Id);
}
public IEnumerable<string>? GetFriends(int personId)
{
if(Friends == null)
throw new Exception("No Friends list available");
if (Friends.TryGetValue(personId, out var friendIds))
return People.Where(x => friendIds.Contains(x.Key)).Select(x => x.ToString());
else
return null;
}
}