예제 #1
0
        public static int CreatePermissionGroup(string groupName)
        {
            const string query = "INSERT INTO (name) permission_groups VALUES (@name)";

            DbManager.PrepareQuery(query);
            DbManager.BindValue("@name", groupName);
            DbManager.ExecutePreparedInsertUpdateDelete();

            return(DbManager.GetLastId());
        }
예제 #2
0
        public static int CreateCategory(Category category)
        {
            const string query = "INSERT INTO categories (parent_category_id, name) VALUES (@parentCategoryId, @name)";

            DbManager.PrepareQuery(query);
            DbManager.BindValue("@parentCategoryId", category.ParentCategoryId);
            DbManager.BindValue("@name", category.Name);
            DbManager.ExecutePreparedInsertUpdateDelete();

            return(DbManager.GetLastId());
        }
예제 #3
0
        public static int CreatePost(int topicId, string content, int userId, DateTime createTime)
        {
            const string query =
                "INSERT INTO posts (topic_id, content, user_id, create_time) VALUES (@topicId, @content, @userId, @createTime)";

            DbManager.PrepareQuery(query);
            DbManager.BindValue("@topicId", topicId);
            DbManager.BindValue("@content", content);
            DbManager.BindValue("@userId", userId);
            DbManager.BindValue("@createTime", createTime);
            DbManager.ExecutePreparedInsertUpdateDelete();

            return(DbManager.GetLastId());
        }
예제 #4
0
        public static int CreateTopic(Topic topic)
        {
            const string query =
                "INSERT INTO topics (parent_category_id, title, user_id, closed, sticky, create_time) VALUES (@parent_category_id, @title, @user_id, @closed, @sticky, @create_time)";

            DbManager.PrepareQuery(query);
            DbManager.BindValue("@parent_category_id", topic.Category.Id);
            DbManager.BindValue("@title", topic.Title);
            DbManager.BindValue("@closed", topic.Closed);
            DbManager.BindValue("@sticky", topic.Sticky);
            DbManager.BindValue("@create_time", topic.CreateTime);
            DbManager.ExecutePreparedInsertUpdateDelete();

            return(DbManager.GetLastId());
        }
예제 #5
0
        public static int CreateUser(string username, string password, int minUsernameLength, int maxUsernameLength)
        {
            if (GetUser(username) != null)
            {
                throw new UserAlreadyExitsException();
            }

            if (username.Length < minUsernameLength)
            {
                throw new UsernameTooShortException();
            }

            if (username.Length > maxUsernameLength)
            {
                throw new UsernameTooLongException();
            }

            string salt         = HashManager.GenerateSecureRandomToken();
            string passwordHash = HashManager.HashSha256(password + salt);

            string query = "INSERT INTO users (username, password) VALUES " +
                           "(@username, @password)";

            DbManager.PrepareQuery(query);
            DbManager.BindValue("@username", username.ToLower());
            DbManager.BindValue("@password", passwordHash);
            DbManager.ExecutePreparedInsertUpdateDelete();

            int userId = DbManager.GetLastId();

            query = "INSERT INTO user_salt (userID, salt) VALUES " +
                    $"({userId}, '{salt}')";
            DbManager.InsertUpdateDelete(query);

            return(userId);
        }
예제 #6
0
        public static void PreparedInsertStatement()
        {
            Dictionary <int, string> usersToCreate = new Dictionary <int, string>
            {
                { 1, "User 1" },
                { 2, "TestUser 2" },
                { 3, "User 3" },
                { 4, "TestUser 4" }
            };

            const string insertQuery = "INSERT INTO users (@id, @username)";

            _dbManagerAuth.PrepareQuery(insertQuery);

            foreach (KeyValuePair <int, string> userToCreate in usersToCreate)
            {
                _dbManagerAuth.BindValue("@id", userToCreate.Key);
                _dbManagerAuth.BindValue("@username", userToCreate.Value);
                _dbManagerAuth.ExecutePreparedInsertUpdateDelete();
            }
        }