Introduction and Context Setting

Welcome to the second unit of our course, where we will focus on building the Story Manager for our short story generation service. In the previous lesson, we laid the foundation by creating a structured base prompt using a dedicated class for managing prompts. Now, we will take the next step by developing a system to manage and store the stories generated by our service. The Story Manager will allow us to save, retrieve, and organize stories, making it a crucial component of our application.

Before we dive into building the Story Manager, let's briefly recall some fundamental concepts that will be useful. A class is a way to group related data and functionality together, providing a blueprint for creating objects that can manage and organize information. We will use a collection to store our stories, which allows us to keep track of multiple stories efficiently. This approach will help us manage the stories generated by our service in an organized manner.

Creating the StoryManager Class

Let's start by defining the StoryManager class. This class will be responsible for managing our stories.

Here, we define a class named StoryManager. Inside the class, we have a constructor that initializes a collection to store our stories. This collection starts with a single example story. We dont need to keep track of the next available unique identifier for new stories, as its already stored as the length of our array. This setup ensures that each story we add will have a unique ID, as well as having a story present in our tasks without generating one insid each task.

Note that this implementation keeps stories in memory only during the program’s execution. Once the program stops, the stored stories are lost. For long-term persistence, we would later need to store them in a database or file.

Adding Stories to the Manager

Next, we need a method to add stories to our manager. Let's create the add_story method.

The add_story method takes two parameters: prompt and content. It creates a new story with a unique identifier based around the number of stories we have, appends it to the collection of stories, and returns the newly added story (the last one in our array). This ensures that each story is stored with its prompt and content and can be referenced by its unique ID.

Retrieving Stories

To make our Story Manager useful, we need to retrieve stories. Let's implement methods for this purpose.

The get_stories method returns the entire collection of stories, allowing us to access all stored stories at once.

The get_story_by_id method returns the specific story with the correct id. This allows us to access a particular story without going through the entire list manually.

Implementing and Testing the StoryManager

Now that we have our StoryManager class, let's see how to use it in practice. We'll implement a simple script to test our class.

In this script, we first import the StoryManager class. We then create an instance of StoryManager and simulate adding a story using a test prompt and fake story data. The add_story method is called, and the result is printed to confirm the addition. Finally, we print all stored stories using the get_stories method. The output will show the newly added story and the list of all stories.

Summary and Preparation for Practice

In this lesson, we built the StoryManager class, which is essential for managing and storing stories in our short story generation service. We covered how to create the class, add stories with unique IDs, and retrieve them. As you move on to the practice exercises, you'll have the opportunity to apply these concepts and solidify your understanding. Remember, managing data effectively is key to building robust applications. Keep up the great work, and get ready to put your skills into practice!

Sign up
Join the 1M+ learners on CodeSignal
Be a part of our community of 1M+ users who develop and demonstrate their skills on CodeSignal