You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
83 lines
3.9 KiB
C#
83 lines
3.9 KiB
C#
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Data.Common;
|
|
using WebMVCApi.config;
|
|
|
|
namespace WebMVCApi.Controllers
|
|
{
|
|
[Route("halo/")]
|
|
[ApiController]
|
|
public class DBController : ControllerBase
|
|
{
|
|
[HttpGet("GetHaloContent")]
|
|
public IActionResult GetHaloContent()
|
|
{
|
|
var list = new ArrayList();
|
|
var dbx = new HaloDbContext();
|
|
var conn = dbx.Database.GetDbConnection();
|
|
if(conn.State != System.Data.ConnectionState.Open)
|
|
{
|
|
conn.Open();
|
|
}
|
|
using (var cmd = conn.CreateCommand())
|
|
{
|
|
// cmd.CommandText = "SELECT\r\n\tt1.id,\r\n\tIFNULL(GROUP_CONCAT( t5.NAME ) , '')AS cates ,\r\n\tIFNULL(GROUP_CONCAT( t6.NAME ) , '')AS tags ,\r\n\tt2.original_content,\r\n\tt1.title\r\nFROM\r\n contents t2 \r\n\tLEFT JOIN posts t1\r\n\tON t1.id = t2.post_id\r\n\t\r\n LEFT JOIN post_categories t3 \r\n\tON t1.id = t3.post_id\r\n\t\r\n\tLEFT JOIN post_tags t4 \r\n\tON t1.id = t4.post_id\r\n\t\r\n\tLEFT JOIN categories t5\r\n\tON t3.category_id = t5.id\r\n\t\r\n\tLEFT JOIN tags t6\r\n\tON t4.tag_id = t6.id\r\nGROUP BY\r\n\tt2.post_id";
|
|
cmd.CommandText = "SELECT\r\n\tt1.id,\r\n\tIFNULL(GROUP_CONCAT( t5.NAME ) , '')AS cates ,\r\n\tIFNULL(GROUP_CONCAT( t6.NAME ) , '')AS tags ,\r\n\tt2.original_content,\r\n\tt1.title,\r\n\tt1.create_time\r\nFROM\r\n contents t2 \r\n\tLEFT JOIN posts t1\r\n\tON t1.id = t2.post_id\r\n\t\r\n LEFT JOIN post_categories t3 \r\n\tON t1.id = t3.post_id\r\n\t\r\n\tLEFT JOIN post_tags t4 \r\n\tON t1.id = t4.post_id\r\n\t\r\n\tLEFT JOIN categories t5\r\n\tON t3.category_id = t5.id\r\n\t\r\n\tLEFT JOIN tags t6\r\n\tON t4.tag_id = t6.id\r\nGROUP BY\r\n\tt2.post_id";
|
|
var read = cmd.ExecuteReader();
|
|
while (read.Read()) {
|
|
var id = read.GetInt32(0);
|
|
var cates = read.GetString(1);
|
|
var tags = read.GetString(2);
|
|
var content = read.GetString(3);
|
|
var title = read.GetString(4);
|
|
var createTime = read.GetDateTime(5);
|
|
var setCates = cates.Split(',').ToHashSet();
|
|
var setTags = tags.Split(',').ToHashSet();
|
|
string head =
|
|
$"---\r\n" +
|
|
$"icon: edit\r\n" +
|
|
$"date: {createTime.ToString("yyyy-MM-dd")}\r\n";
|
|
|
|
if (setCates.First()!="")
|
|
{
|
|
head += $"category:\r\n";
|
|
}
|
|
|
|
foreach (var cate in setCates)
|
|
{
|
|
if (!cate.Equals("")) {
|
|
head += $" - {cate}\r\n";
|
|
}
|
|
}
|
|
if (setTags.First() != "")
|
|
{
|
|
head += $"tag:\r\n";
|
|
}
|
|
|
|
foreach (var tag in setTags)
|
|
{
|
|
if (!tag.Equals("")) {
|
|
head += $" - {tag}\r\n";
|
|
}
|
|
}
|
|
head +=
|
|
"headerDepth: 5\r\n" +
|
|
"---\r\n\n\n" +
|
|
$"# {title}\r\n";
|
|
title = title.Replace("/", "");
|
|
System.IO.File.WriteAllText($"./md/{title}.md", head+ content);
|
|
Console.WriteLine(id);
|
|
list.Add(content);
|
|
}
|
|
}
|
|
return Ok(list);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
}
|