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 the PromptManager class. 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. In Python, a class is a blueprint for creating objects, and it allows us to bundle data and functionality together. Lists, on the other hand, are a versatile data structure that can store a collection of items. We will use these concepts to create and manage our stories efficiently. If you need a refresher, remember that a class is defined using the class keyword, and lists are created using square brackets [].

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 an __init__ method, which is a special method in Python used to initialize objects. The self.stories is a list that will hold our generated stories. This list is initialized as empty, ready to store stories as they are created.

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’d 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 story. It appends a dictionary to the self.stories list, where each dictionary contains an id, prompt, and story. The id is generated using the current length of the list, ensuring each story has a unique identifier. The method returns the newly added story, allowing us to confirm the addition.

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 list of stories, allowing us to access all stored stories at once.

The get_story_by_id method retrieves a specific story using its id. This method is useful when we want to access a particular story without going through the entire list.

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